Annotation of OpenXM/src/kan96xx/Kan/extern.h, Revision 1.36
1.36 ! takayama 1: /* $OpenXM: OpenXM/src/kan96xx/Kan/extern.h,v 1.35 2006/02/01 00:30:05 takayama Exp $ */
1.1 maekawa 2: /*********** global variables for module stackmachine***************/
3: extern int VerboseStack;
4: extern int DebugStack;
5: extern FILE *Fstack;
1.5 takayama 6: #if defined(__CYGWIN__)
7: extern sigjmp_buf EnvOfStackMachine;
8: #else
1.1 maekawa 9: extern jmp_buf EnvOfStackMachine;
1.5 takayama 10: #endif
1.1 maekawa 11: extern struct object NullObject;
12: extern struct object NoObject;
13: extern int Lookup[TYPES][TYPES];
14:
15:
16: /* scanner.c */
17: /*struct tokens getokenSM(actionType kind,char *str);
18: struct tokens *decomposeToTokens(char *str,int *size);*/
19: struct tokens getokenSM();
20: struct tokens *decomposeToTokens();
21: char *getLOAD_SM1_PATH();
1.33 takayama 22: char *traceShowScannerBuf();
1.1 maekawa 23:
24: /* stackmachine.c object */
25: struct object *newObject(void);
26: struct object newObjectArray(int size);
27: int isNullObject(struct object obj);
28:
29: /* stackmachine.c dictionary */
30: int putSystemDictionary(char *str,struct object ob);
31: int findSystemDictionary(char *str);
32: int putUserDictionary(char *str,int h0,int h1,struct object ob,
33: struct dictionary *dic);
34: struct object KputUserDictionary(char *str,struct object ob);
35: struct object findUserDictionary(char *str,int h0,int h1,
36: struct context *cp);
37: struct object KfindUserDictionary(char *str);
38: int putPrimitiveFuction(char *str,int number);
39: int hash0(char *s);
40: int hash1(char *s);
41: void hashInitialize(struct dictionary *dic);
42: struct tokens lookupTokens(struct tokens t);
43: struct object lookupLiteralString(char *s);
44: int putUserDictionary2(char *str,int h0,int h1,int attr,
45: struct dictionary *dic);
46: void KdefinePrimitiveFunctions(void);
47: struct object showSystemDictionary(int f);
48: int showUserDictionary(void) ;
49:
50:
51: /* stackmachine.c stack */
52: struct object Kpop(void); /* Kpush and Kpop may be used only in stackmachine.c
53: and primitive.c */
54: int Kpush(struct object ob);
55: struct object peek(int k);
56: void printOperandStack(void);
57: struct object newOperandStack(int size);
58: void setOperandStack(struct object ob);
59: void stdOperandStack(void);
60:
61: /* stackmachine.c printing */
62: void printObject(struct object ob,int nl,FILE *fp) ;
63: void printObjectArray(struct object ob,int nl,FILE *fp);
64:
65: /* stackmachine.c misc*/
66: void scanner(void);
67: void ctrlC(int sig);
1.7 takayama 68: void cancelAlarm();
1.1 maekawa 69: int executeToken(struct tokens token);
70: int executePrimitive(struct object ob);
71: int isLiteral(char *str);
72: void lockCtrlCForOx();
73: void unlockCtrlCForOx();
74: void restoreCtrlCForOx();
1.27 takayama 75: int executeExecutableArray(struct object ob,char *fname,int withGotoP);
1.1 maekawa 76:
77: /* stackmachine.c export */
78: int KSdefineMacros(void);
79: struct object KSpop(void);
80: void KSpush(struct object ob);
81: char * KSstringPop(void);
82: int KSstackPointer(void);
83: struct object KSdupErrors(void);
1.3 takayama 84: struct object KSpeek(int k);
1.35 takayama 85: struct object KSnewObjectArray(int k);
1.1 maekawa 86:
87: /* stackmachine.c context */
88: struct context *newContext0(struct context *super,char *name);
89: struct object KnewContext(struct object superobj, char *name);
90: void fprintContext(FILE *fp,struct context *c);
91: void KsetContext(struct object contextobj);
92: void contextControl(actionOfContextControl ctl);
93: struct object getSuperContext(struct object contextObj) ;
1.22 takayama 94:
95: /* stackmachine.c back-trace */
96: void tracePushName(char *s);
97: void traceClearStack(void);
98: char *tracePopName(void);
99: char *traceShowStack(void);
1.35 takayama 100: struct object *traceNameStackToArrayp(void);
1.1 maekawa 101:
102: /* kclass.c */
1.36 ! takayama 103: void initClassDataBase();
1.1 maekawa 104: void fprintClass(FILE *fp,struct object ob);
105: int KclassEqualQ(struct object ob1,struct object ob2);
106: struct object KcreateClassIncetance(struct object ob1,
107: struct object ob2,
108: struct object ob3);
109: struct object KclassDataConversion(struct object ob1,struct object ob2);
110: /* dataConversion is also used for creating new object. */
111: /* Arithmetic functions. */
112: struct object Kclass_ooAdd(struct object ob1,struct object ob2);
113:
114: /* ErrorStack */
115: int pushErrorStack(struct object obj);
116: struct object popErrorStack(void);
117: int KScheckErrorStack(void);
118: struct object KnewErrorPacket(int serial,int no,char *message);
119: struct object KnewErrorPacketObj(struct object obj);
120:
121: /** usage.c */
122: void Kusage(struct object ob);
123: void Kusage2(FILE *fp,char *s);
124:
125: /* list.c */
126: struct object *newList(struct object *op);
127: int klength(struct object *op);
128: struct object *vJoin(struct object *list1,struct object *list2);
129: struct object car(struct object *list);
130: struct object *cdr(struct object *list);
131: void printObjectList(struct object *op);
132: int memberQ(struct object *list1,struct object list2);
1.24 takayama 133:
134: struct object KvJoin(struct object listo1,struct object listo2);
135: struct object Kcar(struct object listo);
136: struct object Kcdr(struct object listo);
137: struct object KlistToArray(struct object listo);
138: struct object KarrayToList(struct object ob);
1.1 maekawa 139:
140: /* list:conversion */
141: struct object listToArray(struct object *op);
142: struct object *arrayToList(struct object ob);
1.29 takayama 143: struct object newByteArray(int size,struct object obj);
1.30 takayama 144: struct object newByteArrayFromStr(char *s,int size);
1.29 takayama 145: struct object byteArrayToArray(struct object obj);
1.1 maekawa 146:
147: /* kanExport0.c */
148: /** arithmetic **/
149: struct object KooAdd(struct object ob1, struct object ob2);
150: struct object KooSub(struct object ob1, struct object ob2);
151: struct object KooMult(struct object ob1,struct object ob2);
152: struct object KooDiv(struct object ob1,struct object ob2);
153: struct object KaoMult(struct object aa,struct object bb);
154: struct object KooDiv2(struct object ob1,struct object ob2);
155: struct object KoNegate(struct object ob1);
156: struct object KreduceRationalFunction(struct object ob);
1.16 takayama 157: struct object KooPower(struct object ob1,struct object ob2);
1.1 maekawa 158:
159: /* for rational function object */
160: struct object KoInverse(struct object ob);
161: int KisInvalidRational(objectp ob);
162: objectp copyObjectp(objectp op);
163: struct object KnewRationalFunction0(objectp op1, objectp op2);
164: int KisZeroObject(objectp ob);
165: int KisOneObject(objectp ob);
166: int KisMinusOneObject(objectp ob);
167:
168:
169: /** relation */
170: struct object KoIsPositive(struct object ob);
171: int KooEqualQ(struct object o1,struct object o2);
172: struct object KooGreater(struct object o1,struct object o2);
173: struct object KooLess(struct object o1,struct object o2);
174:
175:
176: /** Conversion */
177: struct object KdataConversion(struct object ob1, char *key);
1.21 takayama 178: struct object Kto_int32(struct object ob);
1.1 maekawa 179: struct object KpoInteger(int i);
180: struct object KpoString(char *s);
181: struct object KpoPOLY(POLY f);
182: struct object KpoArrayOfPOLY(struct arrayOfPOLY *ap);
183: struct object KpoMatrixOfPOLY(struct matrixOfPOLY *mp);
184: struct object KpoRingp(struct ring *ringp);
185: struct object KpoDouble(double a);
1.17 takayama 186: struct object KpoUniversalNumber(struct coeff *u);
1.19 takayama 187: struct object KintToUniversalNumber(int n);
1.1 maekawa 188: #define KopInteger(o) ( (o).lc.ival )
189: #define KopString(o) ( (o).lc.str )
190: #define KopPOLY(o) ( (o).lc.poly )
191: #define KopArrayOfPOLY(o) ( *((o).lc.arrayp) )
192: #define KopMatrixOfPOLY(o) ( *((o).lc.matrixp))
193: #define KopArrayOfPOLYp(o) ( (o).lc.arrayp )
194: #define KopMatrixOfPOLYp(o) ( (o).lc.matrixp)
195: #define KopRingp(o) ( (o).lc.ringp )
196: #define KopUniversalNumber(o) ( (o).lc.universalNumber )
197: #define Knumerator(o) ( (o).lc.op )
198: #define Kdenominator(o) ( (o).rc.op )
199: #define KopDouble(ob) (*((ob).lc.dbl))
1.29 takayama 200: #define KopByteArray(o) ( (o).lc.bytes )
201: #define getByteArraySize(o) ( (o).rc.ival )
1.1 maekawa 202: char *KPOLYToString(POLY f);
203: /** conversion 2 **/
204: struct object arrayOfPOLYToArray(struct arrayOfPOLY *aa);
205: struct object matrixOfPOLYToArray(struct matrixOfPOLY *pmat);
206: struct arrayOfPOLY *arrayToArrayOfPOLY(struct object oa);
207: struct matrixOfPOLY *arrayToMatrixOfPOLY(struct object oa);
208: double toDouble0(struct object ob);
209:
210: /** :ring :kan **/
211: int objArrayToOrderMatrix(struct object oA,int order[],int n,int oasize);
212: int KsetOrderByObjArray(struct object oA);
213: struct object oGetOrderMatrix(struct ring *ringp); /* order.c */
214: struct object KgetOrderMatrixOfCurrentRing();
1.17 takayama 215: struct object oRingToOXringStructure(struct ring *ringp); /* order.c */
1.1 maekawa 216: int KsetUpRing(struct object ob1,struct object ob2, struct object ob3,struct object ob4,struct object ob5);
217: void KshowRing(struct ring *ringp);
218: struct object KdefaultPolyRing(struct object num);
219: struct object KswitchFunction(struct object ob1,struct object ob2);
220: void KprintSwitchStatus(void);
221: struct object KoReplace(struct object ob,struct object rule);
222: struct object Kparts(struct object f,struct object v);
223: struct object Kparts2(struct object f,struct object v);
224: struct object parts2(POLY f,POLY g);
225: struct object Kdegree(struct object f,struct object v);
226: struct object KringMap(struct object ob);
227: struct object Ksp(struct object ob1,struct object ob2);
228: struct object Khead(struct object ob);
229: int KpolyLength(POLY f);
230: struct object KsetOutputOrder(struct object obj,struct ring *rp);
231: struct object KsetVariableNames(struct object obj,struct ring *rp);
1.28 takayama 232: /* KgetRingInfo has not yet been implemented. */
233: struct object KgetRingInfo(struct object ringObj, struct object ofunc);
1.1 maekawa 234:
235: /* :eval */
236: struct object Keval(struct object obj);
237:
238: /** misc **/
239: struct object KtoRecords(struct object ob1);
1.9 takayama 240: struct object KstringToArgv(struct object ob1);
1.34 takayama 241: struct object KstringToArgv2(struct object ob1,struct object ob2);
1.1 maekawa 242: void Kclose(void);
243: int warningKan(char *s);
1.4 takayama 244: int warningKanNoStrictMode(char *s);
1.1 maekawa 245: int errorKan1(char *s,char *m);
246: struct object test(struct object ob);
247: struct object Kextension(struct object ob);
248: struct object KgbExtension(struct object ob);
249: struct object KmpzExtension(struct object ob);
1.23 takayama 250: struct object Krest(struct object ob);
251: struct object Kjoin(struct object ob1, struct object ob2);
1.25 takayama 252: struct object Kget(struct object ob1, struct object ob2);
1.1 maekawa 253:
254: /** Utilities */
255: char *KremoveSpace(char *s);
256: int KtoArgvbyCurryBrace(char *str,char *argv[],int limit);
1.31 takayama 257:
258: /** Attribute */
259: struct object KgetAttributeList(struct object ob);
1.32 takayama 260: struct object KsetAttributeList(struct object ob,struct object attr);
1.31 takayama 261: struct object KgetAttribute(struct object ob,struct object key);
1.32 takayama 262: struct object KsetAttribute(struct object ob,struct object key,struct object value);
263: /* ob (key) (value) setAttribute /ob set. They are not destructive. */
1.31 takayama 264:
1.1 maekawa 265:
266:
267: /** kanExport1.c */
268: /* :ring :kan */
269: struct object Kreduction(struct object f,struct object set);
270: struct object Kgroebner(struct object ob);
271:
272: /* :conversion */
273: struct object gradedPolySetToGradedArray(struct gradedPolySet *gps,
274: int keepRedundant);
275: struct object polySetToArray(struct polySet *ps,int keepRedundant);
276: struct object gradedPolySetToArray(struct gradedPolySet *g,int keepRedundant);
277: struct gradedPolySet *arrayToGradedPolySet(struct object ob);
278: struct object syzPolyToArray(int size,POLY f,struct gradedPolySet *grG);
279: struct object getBackwardArray(struct gradedPolySet *grG);
280: POLY arrayToPOLY(struct object ob);
281: struct object POLYToArray(POLY f);
282: struct object oPrincipalPart(struct object ob);
283: struct object oInitW(struct object ob,struct object oWeight);
1.11 takayama 284: struct object KordWsAll(struct object ob,struct object oWeight);
1.1 maekawa 285:
286: /* :misc */
287: struct object homogenizeObject(struct object ob,int *gradep);
288: struct object homogenizeObject_vec(struct object ob,int *gradep);
1.8 takayama 289: struct object homogenizeObject_go(struct object ob,int *gradep);
1.12 takayama 290: void KresetDegreeShift(void);
1.1 maekawa 291: int oGrade(struct object ob);
292: struct ring *oRingp(struct object ob);
293: struct object KisOrdered(struct object of);
294: struct object KvectorToSchreyer_es(struct object obarray);
1.10 takayama 295: POLY objArrayToPOLY(struct object ob);
296: struct object POLYtoObjArray(POLY f,int size);
1.18 takayama 297: struct object KgetExponents(struct object obPoly,struct object type);
1.1 maekawa 298:
299: /* hilbert.c */
300: struct object hilberto(struct object obgb,struct object obvlist);
301:
302: /* option.c */
303: struct object KsystemVariable(struct object ob);
304:
305: void KasirKanExecute0(char *s);
306:
307: struct object KbinaryToObject(int size, char *data);
308: char *KobjectToBinary(struct object ob,int *size);
309:
310: int mmLarger_tower3(POLY ff,POLY gg,struct object *gbList); /* order.c */
311: struct object KschreyerSkelton(struct object g);
1.6 takayama 312:
313: /* misc */
314: struct object KregionMatches(struct object sobj, struct object keyArray);
1.8 takayama 315: int objToInteger(struct object ob);
1.13 takayama 316:
317: /* shell.c */
318: struct object KoxWhich(struct object cmdo,struct object patho);
1.14 takayama 319: struct object KoxShell(struct object ob);
1.15 takayama 320: void KoxShellHelp(char *key,FILE *fp);
1.36 ! takayama 321:
! 322: /* ---- */
! 323: void KinitKan(void);
! 324: int stackmachine_close(void);
! 325: void stackmachine_init(void);
! 326: int memberQ(struct object *list1,struct object obj2);
! 327: int warningStackmachine(char *str);
! 328: void errorStackmachine(char *str);
! 329: int putPrimitiveFunction(char *str,int number);
! 330:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>