MCPcopy Create free account
hub / github.com/JACoders/OpenJK / PC_DefineFromString

Function PC_DefineFromString

codemp/botlib/l_precomp.cpp:1344–1395  ·  view source on GitHub ↗

end of the function PC_Directive_define ============================================================================ Parameter: - Returns: - Changes Globals: - ============================================================================

Source from the content-addressed store, hash-verified

1342// Changes Globals: -
1343//============================================================================
1344define_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: -

Callers 2

PC_AddDefineFunction · 0.85
PC_AddGlobalDefineFunction · 0.85

Calls 8

PC_InitTokenHeapFunction · 0.85
LoadScriptMemoryFunction · 0.85
GetClearedMemoryFunction · 0.85
PC_Directive_defineFunction · 0.85
PC_FreeTokenFunction · 0.85
FreeMemoryFunction · 0.85
FreeScriptFunction · 0.85
PC_FreeDefineFunction · 0.85

Tested by

no test coverage detected