=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/kclass.c,v retrieving revision 1.1.1.1 retrieving revision 1.7 diff -u -p -r1.1.1.1 -r1.7 --- OpenXM/src/kan96xx/Kan/kclass.c 1999/10/08 02:12:02 1.1.1.1 +++ OpenXM/src/kan96xx/Kan/kclass.c 2020/10/06 11:33:46 1.7 @@ -1,12 +1,13 @@ - +/* $OpenXM: OpenXM/src/kan96xx/Kan/kclass.c,v 1.6 2006/01/30 10:38:36 takayama Exp $ */ /* kclass.c, 1997, 3/1 This module handles class data base. This is a top level and provides an interface for sm1 for Sclass objects. Main processing is done in Kclass/* - See, Kclass/sample.h, Kclass/sample.c ; - grep the keyword CLASSNAME_sampleClass + See, Kclass/sample.h, Kclass/sample.c ; + grep the keyword CLASSNAME_sampleClass */ #include +#include #include "datatype.h" #include "stackm.h" #include "extern.h" @@ -21,7 +22,7 @@ struct object * ClassDictionaries[CLASSTABLE_SIZE]; char *ClassNames[CLASSTABLE_SIZE]; int ClassTypes[CLASSTABLE_SIZE]; -initClassDataBase() { +void initClassDataBase() { int i; for (i=0; i ErrorObject with the contents ob1 + + ob1(with class tag) (body) dc --> [left tag, right body of ob1.] */ struct object rob = NullObject; int method ; - struct object ff0; - struct object ff1; - struct object ob3; /* for work.*/ - struct object ob4; + struct object ff0 = OINIT; + struct object ff1 = OINIT; + struct object ob3 = OINIT; /* for work.*/ + struct object ob4 = OINIT; char *ccc; char *key; @@ -228,11 +235,11 @@ struct object KclassDataConversion(struct object ob1,s rob = KpoIndeterminate(ob1); }else if (strcmp(ccc,"mathcap") == 0) { /* You should check ob1 contains mathcap data or not. - I've not yet written them. + I've not yet written them. */ rob = KpoMathCap(&ob1); }else if (strcmp(ccc,"tree") == 0) { - if (ob1.tag != Sarray) errorKan1("%s\n","kclass.c : KclassDataConversion , !array --> indeterminate is not supported."); + if (ob1.tag != Sarray) errorKan1("%s\n","kclass.c : KclassDataConversion , !array --> tree is not supported."); rob = KpoTree(ob1); }else if (strcmp(ccc,"recursivePolynomial") == 0) { if (ob1.tag != Spoly) errorKan1("%s\n","kclass.c : KclassDataConversion , !poly --> recursivePoly is not supported."); @@ -253,80 +260,87 @@ struct object KclassDataConversion(struct object ob1,s switch(ectag(ob1)) { case CLASSNAME_sampleClass: if (strcmp(ccc,"sampleClass") == 0) { - rob = KpoSampleClass(&ob1); + rob = KpoSampleClass(&ob1); }else{ - errorKan1("%s\n","KclassDataCOnversion: this type of data conversion from class object to class object is not supported."); + errorKan1("%s\n","KclassDataCOnversion: this type of data conversion from class object to class object is not supported."); } break; default: - errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object to class object is not supported."); + errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object to class object is not supported."); } break; case 3: key = KopString(ob2); /* target data type */ if (key[0] == 't' || key[0] =='e') { if (strcmp(key,"type?")==0) { - rob = KpoInteger(ob1.tag); - return(rob); + rob = KpoInteger(ob1.tag); + return(rob); }else if (strcmp(key,"type??")==0) { - if (ob1.tag != Sclass) { - rob = KpoInteger(ob1.tag); - }else { - rob = KpoInteger(ectag(ob1)); - } - return(rob); + if (ob1.tag != Sclass) { + rob = KpoInteger(ob1.tag); + }else { + rob = KpoInteger(ectag(ob1)); + } + return(rob); }else if (strcmp(key,"error")==0) { - rob = KnewErrorPacketObj(ob1); - return(rob); + rob = KnewErrorPacketObj(ob1); + return(rob); } + }else if (key[0] == 'b') { + if (strcmp(key,"body") == 0) { + rob = newObjectArray(2); + putoa(rob,0,KpoInteger(ectag(ob1))); + putoa(rob,1,*((struct object *)(ecbody(ob1)))); + return rob; + } } /* Class object to primtive Object */ switch(ectag(ob1)) { case CLASSNAME_sampleClass: if (strcmp(key,"array") == 0) { - rob = *(KopSampleClass(ob1)); + rob = *(KopSampleClass(ob1)); }else{ - errorKan1("%s\n","KclassDataCOnversion: this type of data conversion from class object to primitive object is not supported."); + errorKan1("%s\n","KclassDataCOnversion: this type of data conversion from class object to primitive object is not supported."); } break; case CLASSNAME_mathcap: if (strcmp(key,"array") == 0) { - rob = newObjectArray(2); - ob3 = KpoString("mathcap-object"); - putoa(rob,0,ob3); - putoa(rob,1,*(KopMathCap(ob1))); + rob = newObjectArray(2); + ob3 = KpoString("mathcap-object"); + putoa(rob,0,ob3); + putoa(rob,1,*(KopMathCap(ob1))); }else{ - errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object mathcap to primitive object is not supported."); + errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object mathcap to primitive object is not supported."); } break; case CLASSNAME_indeterminate: if (strcmp(key,"string") == 0) { - rob = KopIndeterminate(ob1); + rob = KopIndeterminate(ob1); }else { - errorKan1("%s\n","KclassDataConversion: interminate-->?? is not supported.."); + errorKan1("%s\n","KclassDataConversion: interminate-->?? is not supported.."); } break; case CLASSNAME_tree: if (strcmp(key,"array") == 0) { - rob = KopTree(ob1); + rob = KopTree(ob1); }else { - errorKan1("%s\n","KclassDataConversion: tree-->?? is not supported.."); + errorKan1("%s\n","KclassDataConversion: tree-->?? is not supported.."); } break; case CLASSNAME_recursivePolynomial: if (strcmp(key,"string") == 0) { - errorKan1("%s\n","Translation of recursive polynomial to a string should be implemented."); + errorKan1("%s\n","Translation of recursive polynomial to a string should be implemented."); }else if (strcmp(key,"poly") == 0) { - rob = recursivePolyToPoly(ob1); + rob = recursivePolyToPoly(ob1); }else if (strcmp(key,"array") == 0) { - rob = KopRecursivePolynomial(ob1); + rob = KopRecursivePolynomial(ob1); }else { - errorKan1("%s\n","KclassDataConversion: recursivePoly-->?? is not supported.."); + errorKan1("%s\n","KclassDataConversion: recursivePoly-->?? is not supported.."); } break; default: - errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object to primitive object is not supported."); + errorKan1("%s\n","KclassDataConversion: this type of data conversion from class object to primitive object is not supported."); } break; }