MCPcopy Create free account
hub / github.com/anjo76/angelscript / RegisterTypesFromScript

Method RegisterTypesFromScript

sdk/angelscript/source/as_builder.cpp:825–881  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

823}
824
825void asCBuilder::RegisterTypesFromScript(asCScriptNode *node, asCScriptCode *script, asSNameSpace *ns)
826{
827 asASSERT(node->nodeType == snScript);
828
829 // Find structure definitions first
830 node = node->firstChild;
831 while( node )
832 {
833 asCScriptNode *next = node->next;
834 if( node->nodeType == snNamespace )
835 {
836 // Recursively register the entities defined in the namespace
837 asCString nsName;
838 nsName.Assign(&script->code[node->firstChild->tokenPos], node->firstChild->tokenLength);
839 if( ns->name != "" )
840 nsName = ns->name + "::" + nsName;
841
842 asSNameSpace *nsChild = engine->AddNameSpace(nsName.AddressOf());
843 RegisterTypesFromScript(node->lastChild, script, nsChild);
844 }
845 else
846 {
847 if( node->nodeType == snClass )
848 {
849 node->DisconnectParent();
850 RegisterClass(node, script, ns);
851 }
852 else if( node->nodeType == snInterface )
853 {
854 node->DisconnectParent();
855 RegisterInterface(node, script, ns);
856 }
857 else if( node->nodeType == snEnum )
858 {
859 node->DisconnectParent();
860 RegisterEnum(node, script, ns);
861 }
862 else if( node->nodeType == snTypedef )
863 {
864 node->DisconnectParent();
865 RegisterTypedef(node, script, ns);
866 }
867 else if( node->nodeType == snFuncDef )
868 {
869 node->DisconnectParent();
870 RegisterFuncDef(node, script, ns, 0);
871 }
872 else if( node->nodeType == snMixin )
873 {
874 node->DisconnectParent();
875 RegisterMixinClass(node, script, ns);
876 }
877 }
878
879 node = next;
880 }
881}
882

Callers

nothing calls this directly

Calls 4

AssignMethod · 0.80
AddNameSpaceMethod · 0.80
DisconnectParentMethod · 0.80
AddressOfMethod · 0.45

Tested by

no test coverage detected