[BACK]Return to extern.h CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Annotation of OpenXM/src/kan96xx/Kan/extern.h, Revision 1.35

1.35    ! takayama    1: /* $OpenXM: OpenXM/src/kan96xx/Kan/extern.h,v 1.34 2005/09/27 06:10:43 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 */
                    103: int initClassDataBase();
                    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);

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>