Changeset 11054 for code/branches/cpp11_v3/src/libraries/core/class/Super.h
- Timestamp:
- Jan 10, 2016, 1:54:11 PM (9 years ago)
- Location:
- code/branches/cpp11_v3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/cpp11_v3
- Property svn:mergeinfo changed
-
code/branches/cpp11_v3/src/libraries/core/class/Super.h
r10624 r11054 94 94 static void superCheck() \ 95 95 { \ 96 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>( 0)); \96 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>(nullptr)); \ 97 97 SuperFunctionCondition<functionnumber + 1, T, 0, templatehack2>::superCheck(); \ 98 98 } \ … … 103 103 { \ 104 104 ClassIdentifier<T>* identifier = ClassIdentifier<T>::getIdentifier(); \ 105 for ( std::set<const Identifier*>::iterator it = identifier->getDirectChildren().begin(); it != identifier->getDirectChildren().end(); ++it) \105 for (const Identifier* child : identifier->getDirectChildren()) \ 106 106 { \ 107 if (((ClassIdentifier<T>*) (*it))->bSuperFunctionCaller_##functionname##_isFallback_ && ((ClassIdentifier<T>*)(*it))->superFunctionCaller_##functionname##_) \107 if (((ClassIdentifier<T>*)child)->bSuperFunctionCaller_##functionname##_isFallback_ && ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_) \ 108 108 { \ 109 delete ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_; \110 ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_ = 0; \111 ((ClassIdentifier<T>*) (*it))->bSuperFunctionCaller_##functionname##_isFallback_ = false; \109 delete ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_; \ 110 ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_ = nullptr; \ 111 ((ClassIdentifier<T>*)child)->bSuperFunctionCaller_##functionname##_isFallback_ = false; \ 112 112 } \ 113 113 \ 114 if (!((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_) \114 if (!((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_) \ 115 115 { \ 116 orxout(verbose, context::super) << "Added SuperFunctionCaller for " << #functionname << ": " << ClassIdentifier<T>::getIdentifier()->getName() << " <- " << ((ClassIdentifier<T>*) (*it))->getName() << endl; \117 ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_ = new SuperFunctionClassCaller_##functionname <T>; \116 orxout(verbose, context::super) << "Added SuperFunctionCaller for " << #functionname << ": " << ClassIdentifier<T>::getIdentifier()->getName() << " <- " << ((ClassIdentifier<T>*)child)->getName() << endl; \ 117 ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_ = new SuperFunctionClassCaller_##functionname <T>; \ 118 118 } \ 119 else if (((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_->getParentIdentifier() != ClassIdentifier<T>::getIdentifier()) \120 orxout(internal_warning, context::super) << "SuperFunctionCaller for " << #functionname << " in " << ((ClassIdentifier<T>*) (*it))->getName() << " calls function of " << ((ClassIdentifier<T>*)(*it))->superFunctionCaller_##functionname##_->getParentIdentifier()->getName() << " but " << ClassIdentifier<T>::getIdentifier()->getName() << " is also possible (do you use multiple inheritance?)" << endl; \119 else if (((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_->getParentIdentifier() != ClassIdentifier<T>::getIdentifier()) \ 120 orxout(internal_warning, context::super) << "SuperFunctionCaller for " << #functionname << " in " << ((ClassIdentifier<T>*)child)->getName() << " calls function of " << ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_->getParentIdentifier()->getName() << " but " << ClassIdentifier<T>::getIdentifier()->getName() << " is also possible (do you use multiple inheritance?)" << endl; \ 121 121 } \ 122 122 } \ … … 154 154 // This call to the apply-function is the whole check. By calling the function with 155 155 // a T* pointer, the right function get's called. 156 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>( 0));156 SuperFunctionCondition<functionnumber, T, 0, templatehack2>::apply(static_cast<T*>(nullptr)); 157 157 158 158 // Go go the superCheck for of next super-function (functionnumber + 1) … … 171 171 172 172 // Iterate through all children 173 for ( std::set<const Identifier*>::iterator it = identifier->getDirectChildren().begin(); it != identifier->getDirectChildren().end(); ++it)173 for (const Identifier* child : identifier->getDirectChildren()) 174 174 { 175 175 // Check if the caller is a fallback-caller 176 if (((ClassIdentifier<T>*) (*it))->bSuperFunctionCaller_##functionname##_isFallback_ && ((ClassIdentifier<T>*)(*it))->superFunctionCaller_##functionname##_)176 if (((ClassIdentifier<T>*)child)->bSuperFunctionCaller_##functionname##_isFallback_ && ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_) 177 177 { 178 178 // Delete the fallback caller an prepare to get a real caller 179 delete ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_;180 ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_ = 0;181 ((ClassIdentifier<T>*) (*it))->bSuperFunctionCaller_##functionname##_isFallback_ = false;179 delete ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_; 180 ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_ = nullptr; 181 ((ClassIdentifier<T>*)child)->bSuperFunctionCaller_##functionname##_isFallback_ = false; 182 182 } 183 183 184 184 // Check if there's not already a caller 185 if (!((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_)185 if (!((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_) 186 186 { 187 187 // Add the SuperFunctionCaller 188 orxout(verbose, context::super) << "adding functionpointer to " << ((ClassIdentifier<T>*) (*it))->getName() << endl;189 ((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_ = new SuperFunctionClassCaller_##functionname <T>;188 orxout(verbose, context::super) << "adding functionpointer to " << ((ClassIdentifier<T>*)child)->getName() << endl; 189 ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_ = new SuperFunctionClassCaller_##functionname <T>; 190 190 } 191 191 192 192 // If there is already a caller, but for another parent, print a warning 193 else if (((ClassIdentifier<T>*) (*it))->superFunctionCaller_##functionname##_->getParentIdentifier() != ClassIdentifier<T>::getIdentifier())194 orxout(internal_warning, context::super) << "SuperFunctionCaller for " << #functionname << " in " << ((ClassIdentifier<T>*) (*it))->getName() << " calls function of " << ((ClassIdentifier<T>*)(*it))->superFunctionCaller_##functionname##_->getParentIdentifier()->getName() << " but " << ClassIdentifier<T>::getIdentifier()->getName() << " is also possible (do you use multiple inheritance?)" << endl;193 else if (((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_->getParentIdentifier() != ClassIdentifier<T>::getIdentifier()) 194 orxout(internal_warning, context::super) << "SuperFunctionCaller for " << #functionname << " in " << ((ClassIdentifier<T>*)child)->getName() << " calls function of " << ((ClassIdentifier<T>*)child)->superFunctionCaller_##functionname##_->getParentIdentifier()->getName() << " but " << ClassIdentifier<T>::getIdentifier()->getName() << " is also possible (do you use multiple inheritance?)" << endl; 195 195 } 196 196 } … … 584 584 // Creates the super-function-callers by calling the first SuperFunctionCondition check 585 585 // This get's called within the initialization of an Identifier 586 virtual void createSuperFunctionCaller() const 586 virtual void createSuperFunctionCaller() const override 587 587 { 588 588 SuperFunctionCondition<0, T, 0, 0>::superCheck();
Note: See TracChangeset
for help on using the changeset viewer.