version 1.8, 2003/11/20 09:20:36 |
version 1.12, 2004/09/11 01:00:42 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.7 2003/08/24 05:19:43 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.11 2003/12/05 23:14:14 takayama Exp $ */ |
/* primitive.c */ |
/* primitive.c */ |
/* The functions in this module were in stackmachine.c */ |
/* The functions in this module were in stackmachine.c */ |
|
|
|
|
|
|
int PrintDollar = 1; /* flag for printObject() */ |
int PrintDollar = 1; /* flag for printObject() */ |
int PrintComma = 1; /* flag for printObject() */ |
int PrintComma = 1; /* flag for printObject() */ |
|
int InSendmsg2 = 0; |
#define OB_ARRAY_MAX (AGLIMIT+100) |
#define OB_ARRAY_MAX (AGLIMIT+100) |
|
|
extern int GotoP; |
extern int GotoP; |
Line 123 static char *operatorType(type) |
|
Line 124 static char *operatorType(type) |
|
#define Scclass 99 |
#define Scclass 99 |
#define Scoeff2 100 |
#define Scoeff2 100 |
#define Stlimit 101 |
#define Stlimit 101 |
|
#define Soxshell 102 |
/***********************************************/ |
/***********************************************/ |
void printObject(ob,nl,fp) |
void printObject(ob,nl,fp) |
struct object ob; |
struct object ob; |
Line 376 void KdefinePrimitiveFunctions() { |
|
Line 378 void KdefinePrimitiveFunctions() { |
|
putPrimitiveFunction("system_variable",Ssystem_variable); |
putPrimitiveFunction("system_variable",Ssystem_variable); |
putPrimitiveFunction("test",Stest); |
putPrimitiveFunction("test",Stest); |
putPrimitiveFunction("tlimit",Stlimit); |
putPrimitiveFunction("tlimit",Stlimit); |
|
putPrimitiveFunction("oxshell",Soxshell); |
putPrimitiveFunction("map",Smap); |
putPrimitiveFunction("map",Smap); |
putPrimitiveFunction("to_records",Sto_records); |
putPrimitiveFunction("to_records",Sto_records); |
putPrimitiveFunction("Usage",Susage); |
putPrimitiveFunction("Usage",Susage); |
Line 593 int executePrimitive(ob) |
|
Line 596 int executePrimitive(ob) |
|
/* ob2 ob1 get */ |
/* ob2 ob1 get */ |
ob1 = Kpop(); |
ob1 = Kpop(); |
ob2 = Kpop(); |
ob2 = Kpop(); |
switch(ob2.tag) { |
Kpush(Kget(ob2,ob1)); |
case Sarray: break; |
|
default: errorStackmachine("Usage:get"); |
|
} |
|
switch(ob1.tag) { |
|
case Sinteger: break; |
|
default: errorStackmachine("Usage:get"); |
|
} |
|
i =ob1.lc.ival; |
|
size = getoaSize(ob2); |
|
if ((0 <= i) && (i<size)) { |
|
Kpush(getoa(ob2,i)); |
|
}else{ |
|
errorStackmachine("Index is out of bound. (get)\n"); |
|
} |
|
break; |
break; |
|
|
case Sput: |
case Sput: |
Line 1558 int executePrimitive(ob) |
|
Line 1547 int executePrimitive(ob) |
|
size = ob1.rc.ival; |
size = ob1.rc.ival; |
for (i=0; i<size; i++) { |
for (i=0; i<size; i++) { |
token = tokenArray[i]; |
token = tokenArray[i]; |
|
InSendmsg2 = 1; |
status = executeToken(token); |
status = executeToken(token); |
|
InSendmsg2 = 0; |
if (QuoteMode && (status==DO_QUOTE)) { |
if (QuoteMode && (status==DO_QUOTE)) { |
/* generate tree object, for kan/k0 */ |
/* generate tree object, for kan/k0 */ |
struct object qob; |
struct object qob; |
Line 1575 int executePrimitive(ob) |
|
Line 1566 int executePrimitive(ob) |
|
putoa(qob,0,KpoString("unknown")); |
putoa(qob,0,KpoString("unknown")); |
} |
} |
/* Set the attibute list; class=className */ |
/* Set the attibute list; class=className */ |
putoa(qattr2,0,KpoString("class")); |
|
if (ob2.tag == Sdollar) { |
if (ob2.tag == Sdollar) { |
|
putoa(qattr2,0,KpoString("cd")); |
putoa(qattr2,1,ob2); |
putoa(qattr2,1,ob2); |
}else{ |
}else{ |
|
putoa(qattr2,0,KpoString("class")); |
putoa(qattr2,1,KpoString(CurrentContextp->contextName)); |
putoa(qattr2,1,KpoString(CurrentContextp->contextName)); |
} |
} |
putoa(qattr,0,qattr2); |
putoa(qattr,0,qattr2); |
Line 1711 int executePrimitive(ob) |
|
Line 1703 int executePrimitive(ob) |
|
|
|
} |
} |
*/ |
*/ |
|
break; |
|
|
|
case Soxshell: |
|
ob1 = Kpop(); |
|
Kpush(KoxShell(ob1)); |
break; |
break; |
|
|
case Stlimit: |
case Stlimit: |