| 922 | |
| 923 | // |
| 924 | const char *getObjectTokenField(const char *name) |
| 925 | { |
| 926 | const char *dot = dStrchr(name, '.'); |
| 927 | if(name[0] != '$' && dot) |
| 928 | { |
| 929 | S32 len = dStrlen(name); |
| 930 | AssertFatal(len < sizeof(scratchBuffer)-1, "Sim::getVariable - object name too long"); |
| 931 | dMemcpy(scratchBuffer, name, len+1); |
| 932 | |
| 933 | char * token = dStrtok(scratchBuffer, "."); |
| 934 | SimObject * obj = Sim::findObject(token); |
| 935 | if(!obj) |
| 936 | return(""); |
| 937 | |
| 938 | token = dStrtok(0, ".\0"); |
| 939 | if(!token) |
| 940 | return(""); |
| 941 | |
| 942 | while(token != NULL) |
| 943 | { |
| 944 | const char * val = obj->getDataField(StringTable->insert(token), 0); |
| 945 | if(!val) |
| 946 | return(""); |
| 947 | |
| 948 | token = dStrtok(0, ".\0"); |
| 949 | if(token) |
| 950 | { |
| 951 | obj = Sim::findObject(token); |
| 952 | if(!obj) |
| 953 | return(""); |
| 954 | } |
| 955 | else |
| 956 | return(val); |
| 957 | } |
| 958 | } |
| 959 | |
| 960 | return NULL; |
| 961 | } |
| 962 | |
| 963 | const char *getVariable(const char *name) |
| 964 | { |
no test coverage detected