| 823 | } |
| 824 | |
| 825 | void 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 |
nothing calls this directly
no test coverage detected