end of the function PC_Directive_define ============================================================================ Parameter: - Returns: - Changes Globals: - ============================================================================
| 1342 | // Changes Globals: - |
| 1343 | //============================================================================ |
| 1344 | define_t *PC_DefineFromString(char *string) |
| 1345 | { |
| 1346 | script_t *script; |
| 1347 | source_t src; |
| 1348 | token_t *t; |
| 1349 | int res, i; |
| 1350 | define_t *def; |
| 1351 | |
| 1352 | PC_InitTokenHeap(); |
| 1353 | |
| 1354 | script = LoadScriptMemory(string, strlen(string), "*extern"); |
| 1355 | //create a new source |
| 1356 | Com_Memset(&src, 0, sizeof(source_t)); |
| 1357 | strncpy(src.filename, "*extern", MAX_PATH); |
| 1358 | src.scriptstack = script; |
| 1359 | #if DEFINEHASHING |
| 1360 | src.definehash = (struct define_s **)GetClearedMemory(DEFINEHASHSIZE * sizeof(define_t *)); |
| 1361 | #endif //DEFINEHASHING |
| 1362 | //create a define from the source |
| 1363 | res = PC_Directive_define(&src); |
| 1364 | //free any tokens if left |
| 1365 | for (t = src.tokens; t; t = src.tokens) |
| 1366 | { |
| 1367 | src.tokens = src.tokens->next; |
| 1368 | PC_FreeToken(t); |
| 1369 | } //end for |
| 1370 | #ifdef DEFINEHASHING |
| 1371 | def = NULL; |
| 1372 | for (i = 0; i < DEFINEHASHSIZE; i++) |
| 1373 | { |
| 1374 | if (src.definehash[i]) |
| 1375 | { |
| 1376 | def = src.definehash[i]; |
| 1377 | break; |
| 1378 | } //end if |
| 1379 | } //end for |
| 1380 | #else |
| 1381 | def = src.defines; |
| 1382 | #endif //DEFINEHASHING |
| 1383 | // |
| 1384 | #if DEFINEHASHING |
| 1385 | FreeMemory(src.definehash); |
| 1386 | #endif //DEFINEHASHING |
| 1387 | // |
| 1388 | FreeScript(script); |
| 1389 | //if the define was created successfully |
| 1390 | if (res > 0) return def; |
| 1391 | //free the define is created |
| 1392 | if (src.defines) PC_FreeDefine(def); |
| 1393 | // |
| 1394 | return NULL; |
| 1395 | } //end of the function PC_DefineFromString |
| 1396 | //============================================================================ |
| 1397 | // |
| 1398 | // Parameter: - |
no test coverage detected