=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/cmo.c,v retrieving revision 1.27 retrieving revision 1.29 diff -u -p -r1.27 -r1.29 --- OpenXM/src/ox_toolkit/cmo.c 2016/06/30 01:14:00 1.27 +++ OpenXM/src/ox_toolkit/cmo.c 2018/04/05 05:30:20 1.29 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.26 2016/06/29 05:07:23 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/cmo.c,v 1.28 2018/04/03 09:58:30 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -109,6 +109,25 @@ cmo *list_nth(cmo_list* this, int n) return NULL; } +cell *list_nth_cell(cmo_list* this, int n) +{ + cell* el; + if(list_length(this) > n) { + el = list_first(this); + while(n-- > 0) { + el = list_next(el); + } + return el; + } + return NULL; +} + +char *cmo_indeterminate_get_name(cmo_indeterminate *this) +{ + cmo_string *ob = (cmo_string *)this->ob; + return ob->s; +} + /* for GNU mpz */ void resize_mpz(mpz_ptr mpz, int size) { @@ -336,6 +355,11 @@ cmo_indeterminate* new_cmo_indeterminate(cmo* ob) return c; } +cmo_indeterminate* new_cmo_indeterminate_set_name(char *variable) +{ + return new_cmo_indeterminate(new_cmo_string(variable)); +} + cmo_distributed_polynomial* new_cmo_distributed_polynomial() { cmo_distributed_polynomial* c = MALLOC(sizeof(cmo_distributed_polynomial)); @@ -482,7 +506,7 @@ char *new_string_set_cmo(cmo *m) int cmo_to_int(cmo *n) { - switch(n->tag) { + switch(n->tag) { case CMO_ZERO: return 0; case CMO_INT32: @@ -491,5 +515,5 @@ int cmo_to_int(cmo *n) return mpz_get_si(((cmo_zz *)n)->mpz); default: return 0; - } + } }