void AstModifiers::Unparse(Ostream& os, LexStream* lex_stream) { if (debug_unparse) os << "/*AstModifiers:#" << id << "*/"; for (unsigned i = 0; i < NumModifiers(); i++) { Modifier(i) -> Unparse(os, lex_stream); if (Modifier(i) -> ModifierKeywordCast()) os << ' '; } if (debug_unparse) os << "/*:AstModifiers#" << id << "*/"; }
Modifier* SkeletalExporterBase::findModifier(INode* node, const Class_ID& classID) { auto object = node->GetObjectRef(); while (object && object->SuperClassID() == GEN_DERIVOB_CLASS_ID) { auto derivedObject = static_cast<IDerivedObject*>(object); // Iterate over all entries of the modifier stack. for (auto i = 0; i < derivedObject->NumModifiers(); i++) { // If this modifier is a physique then return it auto modifier = derivedObject->GetModifier(i); if (modifier->ClassID() == classID) return modifier; } object = derivedObject->GetObjRef(); } return nullptr; }