/*=gfunc stack * * what: make list of AutoGen values * * exparg: ag-name, AutoGen value name * * doc: Create a scheme list of all the strings that are associated * with a name. They must all be text values or we choke. =*/ SCM ag_scm_stack(SCM obj) { SCM res; SCM * pos = &res; tDefEntry** ppDE; tDefEntry* pDE; SCM str; res = SCM_EOL; ppDE = findEntryList(ag_scm2zchars(obj, "AG Object")); if (ppDE == NULL) return SCM_EOL; for (;;) { pDE = *(ppDE++); if (pDE == NULL) break; if (pDE->valType != VALTYP_TEXT) return SCM_UNDEFINED; str = AG_SCM_STR02SCM(pDE->val.pzText); *pos = scm_cons(str, SCM_EOL); pos = SCM_CDRLOC(*pos); } return res; }
static int count_entries(char* name) { tDefEntry** papDefs = findEntryList(name); int res = 0; if (papDefs == NULL) return 0; for (;;) { tDefEntry* pDE = *(papDefs++); if (pDE == NULL) break; res++; } return res; }
static int entry_length(char* name) { tDefEntry** papDefs = findEntryList(name); int res = 0; if (papDefs == NULL) return 0; for (;;) { tDefEntry* pDE = *(papDefs++); if (pDE == NULL) break; if (pDE->valType == VALTYP_TEXT) res += strlen(pDE->val.pzText); else res++; } return res; }