static int pop_new_push_old (SLang_Name_Type **handler) { SLang_Name_Type *new_handler; SLang_Name_Type *old_handler; old_handler = *handler; if (SLang_peek_at_stack () == SLANG_NULL_TYPE) { SLang_pop_null (); new_handler = NULL; } else if (NULL == (new_handler = SLang_pop_function ())) return -1; if (-1 == _pSLang_push_nt_as_ref (old_handler)) { SLang_free_function (new_handler); return -1; } SLang_free_function (old_handler); *handler = new_handler; return 0; }
static void intrin_get_reference (char *name) { if (*name == '&') name++; _pSLang_push_nt_as_ref (_pSLlocate_name (name)); }
/* NULL is permitted here */ int SLang_push_function (SLang_Name_Type *nt) { return _pSLang_push_nt_as_ref (nt); }