static void check_intrin_long_qualifier (char *name, long *def) { long q; if (-1 == SLang_get_long_qualifier (name, &q, *def)) return; SLang_push_long (q); }
static void atol_intrin (void) { char *s; SLang_Array_Type *ats; SLang_Array_Type *ati; long *ip; char **strp, **strpmax; if (-1 == pop_array_or_string (_pSLANG_LONG_TYPE, &s, &ats, &ati)) return; if (s != NULL) { (void) SLang_push_long (atol (s)); SLang_free_slstring (s); return; } strp = (char **) ats->data; strpmax = strp + ats->num_elements; ip = (long *) ati->data; while (strp < strpmax) { if (*strp == NULL) *ip++ = 0; else *ip++ = atol (*strp); strp++; } SLang_free_array (ats); (void) SLang_push_array (ati, 1); }