ARSperl

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

        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"            =&gt; reference to <A HREF="ds_alms.html">Active Link Macro Structure</A>,
      <I>or</I> 
 "assign_fields"    =&gt; reference to <A HREF="ds_fas.html">Field Assign Structure</A>,
      <I>or</I> 
 "process"          =&gt; string,
      <I>or</I> 
 "message"          =&gt; <A HREF="ds_statstruct_hash.html">Status Structure</A>, <B>(2.x - 3.x)</B>
 "message"          =&gt; <A HREF="ds_msgstruct_hash.html">Message Structure</A>, <B>(4.x)</B>
      <I>or</I> 
 "characteristics"  =&gt; <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"        =&gt; array of references to <A HREF="ds_mps.html">Macro Parm Structure</A>,
 "macroText"         =&gt; string,
 "macroName"         =&gt; string
}
</PRE>

<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="&lt;--" 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="&lt;--" 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

support.c  view on Meta::CPAN

	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();

support.c  view on Meta::CPAN


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,



( run in 0.343 second using v1.01-cache-2.11-cpan-fd5d4e115d8 )