#include "pigperl.h"
PIG_DEFINE_VOID_FUNC_2(pig_scope_argument, pigscopefptr,
void
*) {
pig_sub_scope *pigscope;
pigscope =
new
pig_sub_scope;
pigscope->pignext = pig_frame->pigscope;
pig_frame->pigscope = pigscope;
pigscope->pigfptr = pig0;
pigscope->pigdata = pig1;
}
PIG_DEFINE_VOID_FUNC_2(pig_scope_virtual, pigscopefptr,
void
*) {
static
pigscopefptr pigfptr = 0;
static
void
*pigptr = 0;
if
(pigptr) (*pigfptr)(pigptr);
pigfptr = pig0;
pigptr = pig1;
}
PIG_DEFINE_VOID_FUNC_1(pig_scope_leave, pig_sub_scope *) {
pig_sub_scope *pigold;
if
(!pig0)
return
;
while
(pig0) {
(*pig0->pigfptr)(pig0->pigdata);
pigold = pig0;
pig0 = pig0->pignext;
delete
pigold;
}
}
#undef pig_frame
PIG_DEFINE_VARIABLE(SV *, pig_virtual_return);
PIG_DEFINE_VARIABLE(
int
, pig_argument_idx);
PIG_DEFINE_VARIABLE(
int
, pig_argument_max_idx);
PIG_DEFINE_VARIABLE(
int
, pig_depth);
PIG_DEFINE_VARIABLE(
struct
pig_sub_frame *, pig_frame) = 0;
PIG_EXPORT_TABLE(pigperl)
PIG_EXPORT_VARIABLE(pig_frame)
PIG_EXPORT_VARIABLE(pig_virtual_return)
PIG_EXPORT_VARIABLE(pig_argument_idx)
PIG_EXPORT_VARIABLE(pig_argument_max_idx)
PIG_EXPORT_VARIABLE(pig_depth)
PIG_EXPORT_FUNC(pig_scope_argument)
PIG_EXPORT_FUNC(pig_scope_virtual)
PIG_EXPORT_FUNC(pig_scope_leave)
PIG_EXPORT_ENDTABLE