=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/cmo.c,v retrieving revision 1.15 retrieving revision 1.17 diff -u -p -r1.15 -r1.17 --- OpenXM/src/ox_toolkit/cmo.c 2003/09/15 09:31:41 1.15 +++ OpenXM/src/ox_toolkit/cmo.c 2003/11/02 03:09:16 1.17 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.14 2003/08/21 12:44:06 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.16 2003/09/18 12:46:08 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -294,6 +294,25 @@ cmo_recursive_polynomial* new_cmo_recursive_polynomial return c; } +cmo_tree* new_cmo_tree(cmo_string* name, cmo_list* attributes, cmo_list* leaves) +{ + cmo_tree* c = MALLOC(sizeof(cmo_tree)); + c->tag = CMO_TREE; + c->name= name; + c->attributes = attributes; + c->leaves = leaves; + return c; +} + +cmo_lambda* new_cmo_lambda(cmo_list* args, cmo_tree* body) +{ + cmo_lambda* c = MALLOC(sizeof(cmo_lambda)); + c->tag = CMO_LAMBDA; + c->args = args; + c->body = body; + return c; +} + cmo_error2* new_cmo_error2(cmo* ob) { cmo_error2* c = MALLOC(sizeof(cmo_error2)); @@ -347,7 +366,8 @@ static char *new_string_set_cmo_list(cmo_list *m) strcat(s, sp[i]); strcat(s, " , "); } - strcat(s, sp[len-1]); + if (len > 0) + strcat(s, sp[len-1]); strcat(s, " ]"); return s; }