ARSperl
view release on metacpan or search on metacpan
}
DBG( ("leave\n") );
return newRV_noinc((SV *) hash);
}
SV *
perl_expandARCharMenuStruct(ARControlStruct * ctrl,
ARCharMenuStruct * in)
{
ARCharMenuStruct menu, *which;
int ret;
unsigned int i;
ARStatusList status;
AV *array;
SV *sub;
char *string;
DBG( ("enter\n") );
Zero(&status, 1, ARStatusList);
Zero(&menu, 1, ARCharMenuStruct);
if (in->menuType != AR_CHAR_MENU_LIST) {
DBG( ("input menu is not a LIST, calling ARExpandCharMenu\n") );
ret = ARExpandCharMenu(ctrl, in,
#if AR_CURRENT_API_VERSION >= 18
0, /* maxRetrieve */
#endif
&menu,
#if AR_CURRENT_API_VERSION >= 18
NULL, /* numMatches */
#endif
&status);
DBG( ("ARECM ret=%d\n", ret) );
if (ARError(ret, status)) {
FreeARCharMenuStruct(&menu, FALSE);
return &PL_sv_undef;
}
which = &menu;
} else {
DBG( ("input menu is a LIST, just using that\n") );
which = in;
}
array = newAV();
DBG( ("expanded menu has %d items\n",
which->u.menuList.numItems) );
for (i = 0; i < which->u.menuList.numItems; i++) {
string = which->u.menuList.charMenuList[i].menuLabel;
av_push(array, newSVpv(string, strlen(string)));
switch (which->u.menuList.charMenuList[i].menuType) {
case AR_MENU_TYPE_VALUE:
string = which->u.menuList.charMenuList[i].u.menuValue;
av_push(array, newSVpv(string, strlen(string)));
break;
case AR_MENU_TYPE_MENU:
sub = perl_expandARCharMenuStruct(ctrl,
which->u.menuList.charMenuList[i].u.childMenu);
if (!sub) {
FreeARCharMenuStruct(&menu, FALSE);
return &PL_sv_undef;
}
av_push(array, sub);
break;
case AR_MENU_TYPE_NONE:
default:
av_push(array, &PL_sv_undef);
break;
}
}
FreeARCharMenuStruct(&menu, FALSE);
return newRV_noinc((SV *) array);
}
SV *
perl_MenuRefreshCode2Str(ARControlStruct * ctrl, unsigned int rc)
{
int i;
for (i = 0;
CharMenuRefreshCodeTypeMap[i].number != TYPEMAP_LAST &&
CharMenuRefreshCodeTypeMap[i].number != rc;
i++);
return newSVpv(CharMenuRefreshCodeTypeMap[i].name, 0);
}
SV *
perl_AREntryListFieldStruct(ARControlStruct * ctrl, AREntryListFieldStruct * in)
{
HV *hash = newHV();
hv_store(hash, "fieldId", strlen("fieldId") , newSViv(in->fieldId), 0);
hv_store(hash, "columnWidth", strlen("columnWidth") , newSViv(in->columnWidth), 0);
hv_store(hash, "separator", strlen("separator") , newSVpv(in->separator, 0), 0);
return newRV_noinc((SV *) hash);
}
SV *
perl_ARIndexStruct(ARControlStruct * ctrl, ARIndexStruct * in)
{
HV *hash = newHV();
AV *array = newAV();
unsigned int i;
if (in->unique)
hv_store(hash, "unique", strlen("unique") , newSViv(1), 0);
for (i = 0; i < in->numFields; i++)
av_push(array, perl_ARInternalId(ctrl, &(in->fieldIds[i])));
hv_store(hash, "fieldIds", strlen("fieldIds") , newRV_noinc((SV *) array), 0);
return newRV_noinc((SV *) hash);
}
SV *
( run in 0.634 second using v1.01-cache-2.11-cpan-39bf76dae61 )