Annotation of OpenXM/src/kan96xx/Kan/kclass.h, Revision 1.2
1.2 ! takayama 1: /* $OpenXM$ */
1.1 maekawa 2:
3: /* kclass.h 1997, 3/1
4: This module handles class data base.
5: Extended class names.
6: */
7:
8: /* Format of extended class
9: Sclass
10: ob.lc.ival : extended tag
11: ob.rc.voidp : body
12: */
13: /* The next macro Extended Class tag returns -1 if the object
14: is not in Sclass and returns extended class tags if the object
15: is in Sclass.
16: */
17: #define ectag(ob) ((ob).tag != Sclass? -1:(ob).lc.ival)
18: #define ecbody(ob) ((ob).rc.voidp)
19: /* Extended Class tags */
20: #define CLASSNAME_OPERANDSTACK 256
21: #define CLASSNAME_ERROR_PACKET 257
22: #define CLASSNAME_CONTEXT 258
23: #define CLASSNAME_GradedPolySet 259
24: #define CLASSNAME_mathcap 260
25: #define CLASSNAME_sampleClass 261
26:
27: #define CLASSNAME_CMO CMO /* 1024 defined in stackm.h and plugin.h */
28: #define CLASSNAME_indeterminate 262
29: #define CLASSNAME_tree 263
30: #define CLASSNAME_recursivePolynomial 264
31: #define CLASSNAME_polynomialInOneVariable 265
32:
33:
34: /* */
35: #define CLASS_NOT_USED 0
36: #define CLASS_INTERNAL 1
37: #define CLASS_OBJ 2
38:
39: /* Conversion functions */
40: struct object KpoOperandStack(struct operandStack * op);
41: struct object KpoErrorPacket(struct object *op);
42: struct object KpoContext(struct context *ct);
43: struct object KpoGradedPolySet(struct gradedPolySet *grG);
44: struct object KpoMathCap(struct object *op);
45: struct object KpoCMOClass(struct object *op);
46: struct object KpoIndeterminate(struct object op);
47: struct object KpoTree(struct object op);
48: struct object KpoRecursivePolynomial(struct object op);
49: struct object KpoPolynomialInOneVariable(struct object op);
50: struct object KpoSampleClass(struct object *op);
51:
52: /* Other constructors */
53: struct object KnewIndeterminate(char *s);
54:
55: #define KopOperandStack(ob) ((struct operandStack *)(ob).rc.voidp)
56: #define KopErrorPacket(ob) ((struct object *)(ob).rc.voidp)
57: #define KopContext(ob) ((struct context *)(ob).rc.voidp)
58: #define KopGradedPolySet(ob) ((struct gradedPolySet *)(ob).rc.voidp)
59: #define KopMathCap(ob) ((struct object *)(ob).rc.voidp)
60: #define KopIndeterminate(ob) (*((struct object *)(ob).rc.voidp))
61: #define KopTree(ob) (*((struct object *)(ob).rc.voidp))
62: #define KopRecursivePolynomial(ob) (*((struct object *)(ob).rc.voidp))
63: #define KopPolynomialInOneVariable(ob) (*((struct object *)(ob).rc.voidp))
64: #define KopSampleClass(ob) ((struct object *)(ob).rc.voidp)
65:
66:
67: void fprintErrorPacket(FILE *fp, struct object *op);
68: void fprintMathCap(FILE *fp, struct object *op);
69:
70: /* Functions in Kclass/sample.c */
71: void fprintSampleClass(FILE *fp,struct object *op);
72: int eqSampleClass(struct object *ob1, struct object *ob2);
73:
74: /* Functions in Kclass/rawcmo.c */
75: void fprintCMOClass(FILE *fp,struct object op);
76:
77: /* Functions in Kclass/indeterminate.c */
78: void fprintInderminate(FILE *fp,struct object ob);
79: int eqIndetermiante(struct object *ob1, struct object *ob2);
80: struct object addTree(struct object ob1,struct object ob2);
81: void fprintTree(FILE *fp,struct object ob);
82: int isTreeAdd(struct object ob);
83:
84: void fprintRecursivePolynomial(FILE *fp,struct object ob);
85: void fprintPolynomialInOneVariable(FILE *fp,struct object ob);
86: struct object polyToRecursivePoly(struct object p);
87: struct object polyToRecursivePoly2(struct object p,struct object vlist,int vn);
88: struct object recursivePolyToPoly(struct object rp);
89: struct object coeffToObject(struct coeff *cp);
90: int isRecursivePolynomial2(struct object ob);
91:
92:
93:
94:
95:
96:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>