/************************************************************************** W I D - S E T - N A M E ** ficl ( wid c-addr -- ) ** Set wid's name pointer to the \0 terminated string address supplied **************************************************************************/ static void widSetName(FICL_VM *pVM) { char *cp = (char *)vmPop(pVM).p; FICL_HASH *pHash = vmPop(pVM).p; pHash->name = cp; return; }
// スタックに積んだままなら捨てる static void pop(struct Expr *c) { if (c->place==STKD) vmPop(); // スタック利用なら解放 if (c->place==STKW || c->place==STKB) { // 意味のない式を書くと vmPop(); // アドレスが残ることがある vmPop(); } }
/************************************************************************** W I D - G E T - N A M E ** ficl ( wid -- c-addr u ) ** Get wid's (optional) name and push onto stack as a counted string **************************************************************************/ static void widGetName(FICL_VM *pVM) { FICL_HASH *pHash = vmPop(pVM).p; char *cp = pHash->name; FICL_INT len = 0; if (cp) len = strlen(cp); vmPush(pVM, LVALUEtoCELL(cp)); vmPush(pVM, LVALUEtoCELL(len)); return; }
const char * mwseInstruction::vmPopString() { VMREGTYPE Arg; if(!vmPop(&Arg)) return 0; return vmGetString((void *)Arg); }