Lines Matching refs:pSys
82 static void ficlSetVersionEnv(FICL_SYSTEM *pSys);
100 FICL_SYSTEM *pSys = ficlMalloc(sizeof (FICL_SYSTEM)); in ficlInitSystemEx() local
102 assert(pSys); in ficlInitSystemEx()
105 memset(pSys, 0, sizeof (FICL_SYSTEM)); in ficlInitSystemEx()
115 pSys->dp = dictCreateHashed((unsigned)nDictCells, HASHSIZE); in ficlInitSystemEx()
116 pSys->dp->pForthWords->name = "forth-wordlist"; in ficlInitSystemEx()
118 pSys->envp = dictCreate((unsigned)nEnvCells); in ficlInitSystemEx()
119 pSys->envp->pForthWords->name = "environment"; in ficlInitSystemEx()
121 pSys->textOut = fsi->textOut; in ficlInitSystemEx()
122 pSys->pExtend = fsi->pExtend; in ficlInitSystemEx()
132 pSys->localp = dictCreate((unsigned)FICL_MAX_LOCALS * CELLS_PER_WORD); in ficlInitSystemEx()
140 ficlCompileCore(pSys); in ficlInitSystemEx()
141 ficlCompilePrefix(pSys); in ficlInitSystemEx()
143 ficlCompileFloat(pSys); in ficlInitSystemEx()
146 ficlCompilePlatform(pSys); in ficlInitSystemEx()
148 ficlSetVersionEnv(pSys); in ficlInitSystemEx()
155 ficlAddPrecompiledParseStep(pSys, "?prefix", ficlParsePrefix); in ficlInitSystemEx()
156 ficlAddPrecompiledParseStep(pSys, "?number", ficlParseNumber); in ficlInitSystemEx()
158 ficlAddPrecompiledParseStep(pSys, ">float", ficlParseFloatNumber); in ficlInitSystemEx()
169 ficlNewVM(pSys); in ficlInitSystemEx()
170 ficlCompileSoftCore(pSys); in ficlInitSystemEx()
171 ficlFreeVM(pSys->vmList); in ficlInitSystemEx()
174 return pSys; in ficlInitSystemEx()
193 int ficlAddParseStep(FICL_SYSTEM *pSys, FICL_WORD *pFW) in ficlAddParseStep() argument
198 if (pSys->parseList[i] == NULL) in ficlAddParseStep()
200 pSys->parseList[i] = pFW; in ficlAddParseStep()
215 void ficlAddPrecompiledParseStep(FICL_SYSTEM *pSys, char *name, FICL_PARSE_STEP pStep) in ficlAddPrecompiledParseStep() argument
217 FICL_DICT *dp = pSys->dp; in ficlAddPrecompiledParseStep()
220 ficlAddParseStep(pSys, pFW); in ficlAddPrecompiledParseStep()
230 FICL_SYSTEM *pSys = pVM->pSys; in ficlListParseSteps() local
231 assert(pSys); in ficlListParseSteps()
238 if (pSys->parseList[i] != NULL) in ficlListParseSteps()
240 vmTextOut(pVM, pSys->parseList[i]->name, 1); in ficlListParseSteps()
253 FICL_VM *ficlNewVM(FICL_SYSTEM *pSys) in ficlNewVM() argument
256 pVM->link = pSys->vmList; in ficlNewVM()
257 pVM->pSys = pSys; in ficlNewVM()
258 pVM->pExtend = pSys->pExtend; in ficlNewVM()
259 vmSetTextOut(pVM, pSys->textOut); in ficlNewVM()
261 pSys->vmList = pVM; in ficlNewVM()
275 FICL_SYSTEM *pSys = pVM->pSys; in ficlFreeVM() local
276 FICL_VM *pList = pSys->vmList; in ficlFreeVM()
280 if (pSys->vmList == pVM) in ficlFreeVM()
282 pSys->vmList = pSys->vmList->link; in ficlFreeVM()
314 int ficlBuild(FICL_SYSTEM *pSys, char *name, FICL_CODE code, char flags) in ficlBuild() argument
321 assert(dictCellsAvail(pSys->dp) > sizeof (FICL_WORD) / sizeof (CELL)); in ficlBuild()
322 dictAppendWord(pSys->dp, name, code, flags); in ficlBuild()
369 FICL_SYSTEM *pSys = pVM->pSys; in ficlExecC() local
370 FICL_DICT *dp = pSys->dp; in ficlExecC()
378 assert(pSys->pInterp[0]); in ficlExecC()
402 vmPushIP(pVM, &(pSys->pInterp[0])); in ficlExecC()
431 dictEmpty(pSys->localp, pSys->localp->pForthWords->size); in ficlExecC()
445 dictEmpty(pSys->localp, pSys->localp->pForthWords->size); in ficlExecC()
484 assert(pVM->pSys->pExitInner); in ficlExecXT()
501 vmPushIP(pVM, &(pVM->pSys->pExitInner)); in ficlExecXT()
542 FICL_WORD *ficlLookup(FICL_SYSTEM *pSys, char *name) in ficlLookup() argument
546 return dictLookup(pSys->dp, si); in ficlLookup()
554 FICL_DICT *ficlGetDict(FICL_SYSTEM *pSys) in ficlGetDict() argument
556 return pSys->dp; in ficlGetDict()
564 FICL_DICT *ficlGetEnv(FICL_SYSTEM *pSys) in ficlGetEnv() argument
566 return pSys->envp; in ficlGetEnv()
575 void ficlSetEnv(FICL_SYSTEM *pSys, char *name, FICL_UNS value) in ficlSetEnv() argument
579 FICL_DICT *envp = pSys->envp; in ficlSetEnv()
597 void ficlSetEnvD(FICL_SYSTEM *pSys, char *name, FICL_UNS hi, FICL_UNS lo) in ficlSetEnvD() argument
601 FICL_DICT *envp = pSys->envp; in ficlSetEnvD()
627 FICL_DICT *ficlGetLoc(FICL_SYSTEM *pSys) in ficlGetLoc() argument
629 return pSys->localp; in ficlGetLoc()
656 void ficlTermSystem(FICL_SYSTEM *pSys) in ficlTermSystem() argument
658 if (pSys->dp) in ficlTermSystem()
659 dictDelete(pSys->dp); in ficlTermSystem()
660 pSys->dp = NULL; in ficlTermSystem()
662 if (pSys->envp) in ficlTermSystem()
663 dictDelete(pSys->envp); in ficlTermSystem()
664 pSys->envp = NULL; in ficlTermSystem()
667 if (pSys->localp) in ficlTermSystem()
668 dictDelete(pSys->localp); in ficlTermSystem()
669 pSys->localp = NULL; in ficlTermSystem()
672 while (pSys->vmList != NULL) in ficlTermSystem()
674 FICL_VM *pVM = pSys->vmList; in ficlTermSystem()
675 pSys->vmList = pSys->vmList->link; in ficlTermSystem()
679 ficlFree(pSys); in ficlTermSystem()
680 pSys = NULL; in ficlTermSystem()
689 static void ficlSetVersionEnv(FICL_SYSTEM *pSys) in ficlSetVersionEnv() argument
691 ficlSetEnvD(pSys, "ficl-version", FICL_VER_MAJOR, FICL_VER_MINOR); in ficlSetVersionEnv()
692 ficlSetEnv (pSys, "ficl-robust", FICL_ROBUST); in ficlSetVersionEnv()