view release on metacpan or search on metacpan
changed perl_ARFilterActionStruct accordingly.
(TS) bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
(TS) bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE.
(TS) bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...))
(TS) bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
(TS) bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
(TS) changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context)
(TS) added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI
(TS) added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs)
changes.dat view on Meta::CPAN
TS bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
(dup_qualifier2(...) != NULL ... return ...)
TS added case: AR_COND_OP_FROM_FIELD to dup_qualifier2
TS added functions perl_ARSetFieldsActionStruct, perl_ARPushFieldsActionStruct;
changed perl_ARFilterActionStruct accordingly.
TS bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
TS bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE.
TS bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...))
TS bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
TS bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
TS changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context)
TS added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI
TS added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs)
TS added module (ARS/CodeTemplate.pm) for code generation
TS change in perl_ARFieldValueOrArithStruct; if tag == AR_VALUE, put dataType into hash
TS added check for h != NULL to strcpyHVal
TS added "case AR_COND_OP_FROM_FIELD" to perl_qualifier()
example/Show_ALink.pl view on Meta::CPAN
if(defined($field->{function})) {
printl 3, "Function:\n";
ProcessFunctionList(4, @{$field->{function}});
}
if(defined($field->{dde})) {
printl 3, "DDE not implemented in ARSperl.\n";
}
}
# SUBROUTINE
# ProcessMacroStruct
#
# DESCRIPTION
# This routine breaks down the macro structure and
# dumps the information contained in it.
sub ProcessMacroStruct {
my $t = shift; # how much indentation to use
my $m = shift; # the macro struct
my $i, @p;
if(defined($m)) {
printl $t, "Macro Name : \"$m->{macroName}\"\n";
printl $t, "Macro Params: $m->{macroParms}\n";
foreach (keys %{$m->{macroParms}}) {
printl $t+1, "$_ = $m->{macroParms}{$_}\n";
}
printl $t, "Macro Text :\n**START**\n$m->{macroText}\n**END**\n";
}
}
# SUBROUTINE
# ProcessActions
#
# DESCRIPTION
# this routine processes the list of actions for this active link,
# deciding what actions are defined and dumping the appropriate
# information.
sub ProcessActions {
my @actions = @_;
if(defined(@actions)) {
$act_num = 1;
foreach $action (@actions) {
printl 1, "Action $act_num:\n";
if(defined($action->{macro})) {
printl 2, "Macro:\n";
ProcessMacroStruct(3, $action->{macro});
}
if(defined($action->{assign_fields})) {
printl 2, "Set Fields:\n";
foreach $setFields (@{$action->{assign_fields}}) {
printl 3, "fieldId: $setFields->{fieldId}\n";
ProcessSetFields($setFields->{assignment});
}
}
if(defined($action->{message})) {
printl 2, "Message: \n";
html/changes.html view on Meta::CPAN
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added case: AR_COND_OP_FROM_FIELD to dup_qualifier2
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added functions perl_ARSetFieldsActionStruct, perl_ARPushFieldsActionStruct;
changed perl_ARFilterActionStruct accordingly. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...)) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added module (ARS/CodeTemplate.pm) for code generation
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>change in perl_ARFieldValueOrArithStruct; if tag == AR_VALUE, put dataType into hash
html/manual/ds_alas.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - Active Link Action Structure</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>Active Link Action Structure</H2>
<PRE>
{
"macro" => reference to <A HREF="ds_alms.html">Active Link Macro Structure</A>,
<I>or</I>
"assign_fields" => reference to <A HREF="ds_fas.html">Field Assign Structure</A>,
<I>or</I>
"process" => string,
<I>or</I>
"message" => <A HREF="ds_statstruct_hash.html">Status Structure</A>, <B>(2.x - 3.x)</B>
"message" => <A HREF="ds_msgstruct_hash.html">Message Structure</A>, <B>(4.x)</B>
<I>or</I>
"characteristics" => <A HREF="ds_fc.html">Field Characteristics</A>,
<I>or</I>
html/manual/ds_alms.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - Active Link Macro Structure</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>Active Link Macro Structure</H2>
<PRE>
{
"macroParms" => array of references to <A HREF="ds_mps.html">Macro Parm Structure</A>,
"macroText" => string,
"macroName" => string
}
</PRE>
<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Table of Contents </A>
<p>
html/manual/ds_mps.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Programmer's Manual</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H4>Macro Parm Structure</H4>
<PRE>
(name : string, value : string)
</PRE>
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Back to Table of Contents </A>
</BODY>
</HTML>
html/manual/toc.html view on Meta::CPAN
</dt>
<dd>
<ul>
<li>
<a href="ds_al.html">Active Link Attributes Structure</a>
<ul>
<li>
<a href="ds_alas.html">Active Link Action Structure</a>
</li>
<li>
<a href="ds_alms.html">Active Link Macro Structure</a>
</li>
</ul>
</li>
<li>
<a href="ds_as.html">Assign Structure</a>
<ul>
<li>
<a href="ds_aoas.html">Arith Op Assign Structure</a>
</li>
<li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ds_getlistgroup_hash.html">List Group Structure</a>
</li>
<li>
<a href="ds_getlistsql_hash.html">List SQL Structure</a>
</li>
<li>
<a href="ds_getlistuser_hash.html">List User Structure</a>
</li>
<li>
<a href="ds_mps.html">Macro Parm Structure</a>
</li>
<li>
<a href="ds_schema.html">Schema Attributes Structure</a>
<ul>
<li>
<a href="ds_elfs.html">Entry List Field Structure</a>
</li>
</ul>
</li>
<li>
support-h.template view on Meta::CPAN
#if AR_EXPORT_VERSION >= 7L
EXTERN void dup_ARFuncCurrencyList(ARFuncCurrencyList *dst, ARFuncCurrencyList *src);
EXTERN ARCurrencyStruct *dup_ARCurrencyStruct(ARControlStruct * ctrl, ARCurrencyStruct * in);
EXTERN SV *perl_ARFuncCurrencyStruct(ARControlStruct * ctrl, ARFuncCurrencyStruct * in);
EXTERN SV *perl_ARCurrencyPartStruct(ARControlStruct *ctrl, ARCurrencyPartStruct *);
#endif
EXTERN SV *perl_ARAssignFieldStruct(ARControlStruct *ctrl, ARAssignFieldStruct *);
EXTERN SV *perl_ARAssignStruct(ARControlStruct *ctrl, ARAssignStruct *);
EXTERN SV *perl_ARFieldAssignStruct(ARControlStruct *ctrl, ARFieldAssignStruct *);
EXTERN SV *perl_ARDisplayStruct(ARControlStruct *ctrl, ARDisplayStruct *);
EXTERN SV *perl_ARMacroParmStruct(ARControlStruct *ctrl, ARMacroParmStruct *);
EXTERN SV *perl_ARActiveLinkMacroStruct(ARControlStruct *ctrl,
ARActiveLinkMacroStruct *);
EXTERN SV *perl_ARFieldCharacteristics(ARControlStruct *ctrl,
ARFieldCharacteristics *);
EXTERN SV *perl_ARDDEStruct(ARControlStruct *ctrl, ARDDEStruct *);
EXTERN SV *perl_ARActiveLinkActionStruct(ARControlStruct *ctrl,
ARActiveLinkActionStruct *);
EXTERN SV *perl_ARFilterActionNotify(ARControlStruct * ctrl, ARFilterActionNotify *);
#if AR_EXPORT_VERSION >= 7L
EXTERN SV *perl_ARFilterActionNotifyAdvanced(ARControlStruct * ctrl, ARFilterActionNotifyAdvanced *);
#endif
#if AR_EXPORT_VERSION >= 8L
case AR_DISPLAY_OPT_HIDDEN:
hv_store(hash, "option", strlen("option") , newSVpv("HIDDEN", 0), 0);
break;
}
hv_store(hash, "x", strlen("x") , newSViv(in->x), 0);
hv_store(hash, "y", strlen("y") , newSViv(in->y), 0);
return newRV_noinc((SV *) hash);
}
SV *
perl_ARMacroParmList(ARControlStruct * ctrl, ARMacroParmList * in)
{
HV *hash = newHV();
unsigned int i;
for (i = 0; i < in->numItems; i++)
hv_store(hash, in->parms[i].name, strlen(in->parms[i].name) , newSVpv(in->parms[i].value, 0), 0);
return newRV_noinc((SV *) hash);
}
SV *
perl_ARActiveLinkMacroStruct(ARControlStruct * ctrl, ARActiveLinkMacroStruct * in)
{
HV *hash = newHV();
hv_store(hash, "macroParms", strlen("macroParms") ,
perl_ARMacroParmList(ctrl, &in->macroParms), 0);
hv_store(hash, "macroText", strlen("macroText") , newSVpv(in->macroText, 0), 0);
hv_store(hash, "macroName", strlen("macroName") , newSVpv(in->macroName, 0), 0);
return newRV_noinc((SV *) hash);
}
SV *
perl_ARFieldCharacteristics(ARControlStruct * ctrl, ARFieldCharacteristics * in)
{
HV *hash = newHV();
SV *
perl_ARActiveLinkActionStruct(ARControlStruct * ctrl, ARActiveLinkActionStruct * in)
{
HV *hash = newHV();
int i = 0;
switch (in->action) {
case AR_ACTIVE_LINK_ACTION_MACRO:
hv_store(hash, "macro", strlen("macro") ,
perl_ARActiveLinkMacroStruct(ctrl, &in->u.macro), 0);
break;
case AR_ACTIVE_LINK_ACTION_FIELDS:
{
ARList *fieldList = NULL;
#if AR_EXPORT_VERSION >= 8L
hv_store(hash, "assign_fields", strlen("assign_fields") ,
perl_ARSetFieldsActionStruct(ctrl,&(in->u.setFields)), 0 );
#else
fieldList = (ARList *) & in->u.fieldList;
hv_store(hash, "assign_fields", strlen("assign_fields") ,
supportrev.c view on Meta::CPAN
static int
rev_ARArithOpAssignStructStr2OP(ARControlStruct * ctrl,
char *c, unsigned int *o);
static int
rev_ARFunctionAssignStructStr2FCODE(ARControlStruct * ctrl,
char *c, unsigned int *o);
static int
rev_ARAssignStruct_helper(ARControlStruct * ctrl,
HV * h, ARAssignStruct * m);
static int
rev_ARActiveLinkMacroStruct_helper(ARControlStruct * ctrl, HV * h,
ARActiveLinkMacroStruct * m);
static int
rev_ARAssignList_helper(ARControlStruct * ctrl,
HV * h, ARFieldAssignList * m, int i);
#if AR_EXPORT_VERSION >= 3
static int
#if AR_CURRENT_API_VERSION >= 14
rev_ARByteListStr2Type(ARControlStruct * ctrl,
char *ts, ARULong32 *tv);
#else
supportrev.c view on Meta::CPAN
/*
* test each has value in turn, first one that is defined, copy in
* and return. DDE: not implemented.
*/
if (hv_exists(h, "process", strlen("process") )) {
al->actionList[idx].action = AR_ACTIVE_LINK_ACTION_PROCESS;
rv += strmakHVal(h, "process", &(al->actionList[idx].u.process));
} else if (hv_exists(h, "macro", strlen("macro") )) {
al->actionList[idx].action = AR_ACTIVE_LINK_ACTION_MACRO;
rv += rev_ARActiveLinkMacroStruct(ctrl, h, "macro",
&(al->actionList[idx].u.macro));
} else if (hv_exists(h, "assign_fields", strlen("assign_fields") )) {
al->actionList[idx].action = AR_ACTIVE_LINK_ACTION_FIELDS;
#if AR_EXPORT_VERSION >= 8L
rv += rev_ARSetFieldsActionStruct(ctrl, h, "assign_fields",
&(al->actionList[idx].u.setFields));
#else
rv += rev_ARFieldAssignList(ctrl, h, "assign_fields",
&(al->actionList[idx].u.fieldList));
#endif
supportrev.c view on Meta::CPAN
return rv;
}
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARPropList_helper: required hash keys not present (prop, value, valueType).");
return -1;
}
#endif /* 3.x */
int
rev_ARActiveLinkMacroStruct(ARControlStruct * ctrl,
HV * h, char *k, ARActiveLinkMacroStruct * m)
{
if (!m || !h || !k) {
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct: invalid (NULL) parameter");
return -1;
}
if (SvTYPE((SV *) h) == SVt_PVHV) {
if (hv_exists(h, k, strlen(k) )) {
SV **val = hv_fetch(h, k, strlen(k) , 0);
if (val && *val) {
/* hash value should be a hash reference */
if (SvTYPE(SvRV(*val)) == SVt_PVHV) {
HV *a = (HV *) SvRV((SV *) * val);
return rev_ARActiveLinkMacroStruct_helper(ctrl, a, m);
} else
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct: hash value is not a hash reference");
} else {
ARError_add(AR_RETURN_WARNING, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct: hv_fetch returned null");
return -2;
}
} else {
ARError_add(AR_RETURN_WARNING, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct: key doesn't exist");
return -2;
}
} else
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct: first argument is not a hash");
return -1;
}
static int
rev_ARActiveLinkMacroStruct_helper(ARControlStruct * ctrl,
HV * h, ARActiveLinkMacroStruct * m)
{
int rv = 0;
if (hv_exists(h, "macroParms", strlen("macroParms") ) &&
hv_exists(h, "macroText", strlen("macroText") ) &&
hv_exists(h, "macroName", strlen("macroName") )) {
rv += strcpyHVal(h, "macroName", m->macroName, AR_MAX_NAME_SIZE);
rv += strmakHVal(h, "macroText", &(m->macroText));
rv += rev_ARMacroParmList(ctrl, h, "macroParms", &(m->macroParms));
return 0;
}
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARActiveLinkMacroStruct_helper: required keys not present in hash (macroParms, macroText, macroName)");
return -1;
}
int
rev_ARMacroParmList(ARControlStruct * ctrl, HV * h, char *k, ARMacroParmList * m)
{
if (!h || !k || !*k || !m) {
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARMacroParmList: invalid parameter(s).");
return -1;
}
if (SvTYPE((SV *) h) == SVt_PVHV) {
if (hv_exists(h, k, strlen(k) )) {
SV **val = hv_fetch(h, k, strlen(k) , 0);
if (val && *val) {
/* hash value should be a hash reference */
if (SvTYPE(SvRV(*val)) == SVt_PVHV) {
supportrev.c view on Meta::CPAN
* the macroparm and the values are
* the value of the macroparm. both
* are pv's. so iterate over every
* key in the hash and populate the
* parms list with them.
*/
(void) hv_iterinit(a);
for (i = 0; hv_iternext(a) != (HE *) NULL; i++);
m->numItems = i;
m->parms = (ARMacroParmStruct *) MALLOCNN(sizeof(ARMacroParmStruct)
* m->numItems);
(void) hv_iterinit(a);
i2 = 0;
while ((hval = hv_iternextsv(a, &hkey, &klen))) {
if (hval && SvPOK(hval)) {
char *vv = SvPV(hval, PL_na);
int vl = SvCUR(hval);
if (i2 <= i) {
(void) strncpy(m->parms[i2].name, hkey, sizeof(ARNameType));
/* (void) copymem(m->parms[i2].value, vv, vl); */
m->parms[i2].value = strdup( vv );
i2++;
} else {
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARMacroParmList: oops! more parms than i thought!");
return -1;
}
} else {
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL, "rev_ARMacroParmList: value for macro param is not a string. macro param name:");
ARError_add(AR_RETURN_ERROR, AP_ERR_CONTINUE, hkey);
rv = -1;
}
}
return rv;
} else
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARMacroParmList: hash value is not a hash reference");
} else {
ARError_add(AR_RETURN_WARNING, AP_ERR_GENERAL,
"rev_ARMacroParmList: hv_fetch returned null");
return -2;
}
} else {
ARError_add(AR_RETURN_WARNING, AP_ERR_GENERAL,
"rev_ARMacroParmList: key doesn't exist");
return -2;
}
} else
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"rev_ARMacroParmList: first argument is not a hash");
return -1;
}
#if defined(_WIN32) && !defined(__GNUC__)
/* roll our own strcasecmp and strncasecmp for Win */
int
strcasecmp(char *s1, char *s2)
{
char *p1, *p2;
supportrev.h view on Meta::CPAN
HV *h, char *k,
ARFunctionAssignStruct *s);
#ifdef ARS452
EXTERN int rev_ARFilterStatusStruct(ARControlStruct *ctrl,
HV *h, char *k, ARFilterStatusStruct *m);
#endif
EXTERN int rev_ARStatusStruct(ARControlStruct *ctrl,
HV *h, char *k, ARStatusStruct *m);
EXTERN int rev_ARFieldCharacteristics(ARControlStruct *ctrl,
HV *h, char *k, ARFieldCharacteristics *m);
EXTERN int rev_ARActiveLinkMacroStruct(ARControlStruct *ctrl,
HV *h, char *k,
ARActiveLinkMacroStruct *m);
EXTERN int rev_ARMacroParmList(ARControlStruct *ctrl,
HV *h, char *k, ARMacroParmList *m);
#if AR_CURRENT_API_VERSION >= 14
EXTERN int rev_ARImageDataStruct(ARControlStruct * ctrl,
HV * h, char *k, ARImageDataStruct * b);
#endif
#if AR_EXPORT_VERSION >= 3
EXTERN int rev_ARByteList(ARControlStruct *ctrl,
HV *h, char *k, ARByteList *b);
EXTERN int rev_ARCoordList(ARControlStruct *ctrl,