=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/include/ca.h,v retrieving revision 1.40 retrieving revision 1.43 diff -u -p -r1.40 -r1.43 --- OpenXM_contrib2/asir2000/include/ca.h 2003/12/23 06:30:14 1.40 +++ OpenXM_contrib2/asir2000/include/ca.h 2004/02/04 07:42:07 1.43 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.39 2003/11/08 01:12:03 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.42 2004/02/03 23:31:58 noro Exp $ */ #include #include @@ -119,6 +119,7 @@ typedef void * pointer; #define O_BYTEARRAY 16 #define O_QUOTE 17 #define O_OPTLIST 18 +#define O_SYMBOL 19 #define O_VOID -1 #define N_Q 0 @@ -361,6 +362,13 @@ typedef struct oOPTLIST { struct oNODE *body; } *OPTLIST; +typedef struct oSymbol { + short id; + short pad; + char *name; + int value; +} *Symbol; + typedef struct oObj { short id; short pad; @@ -491,6 +499,26 @@ struct order_pair { int order, length; }; +struct sparse_weight { + int pos, value; +}; + +#define IS_DENSE_WEIGHT 0 +#define IS_SPARSE_WEIGHT 1 +#define IS_BLOCK 2 + +struct weight_or_block { + int type; + int length; + union { + int *dense_weight; + struct sparse_weight *sparse_weight; + struct { + int order, start; + } block; + } body; +}; + struct order_spec { int id; Obj obj; @@ -505,6 +533,10 @@ struct order_spec { int row; int **matrix; } matrix; + struct { + int length; + struct weight_or_block *w_or_b; + } composite; } ord; }; @@ -669,6 +701,7 @@ bzero((char *)(q)->b,(w)*sizeof(unsigned int))) #define NEWBYTEARRAY(e) ((e)=(BYTEARRAY)MALLOC(sizeof(struct oBYTEARRAY)),OID(e)=O_BYTEARRAY) #define NEWQUOTE(e) ((e)=(QUOTE)MALLOC(sizeof(struct oQUOTE)),OID(e)=O_QUOTE) #define NEWOPTLIST(l) ((l)=(OPTLIST)MALLOC(sizeof(struct oOPTLIST)),OID(l)=O_OPTLIST) +#define NEWSYMBOL(l) ((l)=(SYMBOL)MALLOC(sizeof(struct oSYMBOL)),OID(l)=O_SYMBOL) #define NEWNODE(a) ((a)=(NODE)MALLOC(sizeof(struct oNODE))) #define NEWDC(dc) ((dc)=(DCP)MALLOC(sizeof(struct oDCP))) @@ -1446,6 +1479,7 @@ void dtestroot(int,int,P,LUM,struct oDUM *,DCP *); void dtestroot1(int,int,P,LUM,P *); void dtestsq(int,int,P,LUM,P *); void dtestsql(P,ML,struct oDUM *,DCP *); +void ediffp(VL,P,V,P *); void estimatelc(VL,Q,DCP,VN,P *); void eucum(register int,UM,UM,UM,UM); void exthp(VL,P,int,P *);