Update of /cvsroot/easycalc/easycalc/mlib
In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv4188/mlib
Modified Files:
konvert.c slist.c
Log Message:
concat() now is multiparameter
Index: konvert.c
===================================================================
RCS file: /cvsroot/easycalc/easycalc/mlib/konvert.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -C2 -d -r1.64 -r1.65
*** konvert.c 12 Sep 2006 19:40:56 -0000 1.64
--- konvert.c 25 Sep 2006 20:49:05 -0000 1.65
***************
*** 196,200 ****
{"stddev",LIST_STDDEV,list_stat,0},
{"linreg",LIST_LINREG,list_regr,2},
! {"concat",LIST_CONCAT,list_func3,2},
{"conv",LIST_CONV,list_func3,2},
{"kron",LIST_KRON,list_func3,2},
--- 196,200 ----
{"stddev",LIST_STDDEV,list_stat,0},
{"linreg",LIST_LINREG,list_regr,2},
! {"concat",0,list_concat,0},
{"conv",LIST_CONV,list_func3,2},
{"kron",LIST_KRON,list_func3,2},
Index: slist.c
===================================================================
RCS file: /cvsroot/easycalc/easycalc/mlib/slist.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** slist.c 24 Sep 2006 14:18:26 -0000 1.33
--- slist.c 25 Sep 2006 20:49:05 -0000 1.34
***************
*** 1036,1058 ****
break;
- case LIST_CONCAT:
- {
- Int16 m,n,i;
-
- m=lst1->size;
- n=lst2->size;
- result = list_new(m+n);
- if (!result){
- list_delete(lst1);
- list_delete(lst2);
- return c_memory;}
-
- for(i=0;i<m;i++)
- result->item[i] = lst1->item[i];
- for(i=0;i<n;i++)
- result->item[i+m] = lst2->item[i];
- }
- break;
-
case LIST_KRON:
{
--- 1036,1039 ----
***************
*** 1112,1115 ****
--- 1093,1146 ----
/**************************************************************************
*
+ * FUNCTION: list_concat
+ *
+ * DESCRIPTION: concatenation of two or more lists
+ *
+ * PARAMETERS: lists on stack
+ *
+ * RETURN: list
+ *
+ ***************************************************************************/
+
+ CError
+ list_concat(Functype *func, CodeStack *stack)
+ {
+ List *lst1,*lst2,*result;
+ Int16 m,n,i,k;
+ CError err;
+
+ if (func->paramcount<2)
+ return c_syntax;
+
+ for(k=1;k<func->paramcount;k++){
+
+ err = stack_get_val2(stack,&lst1,&lst2,list);
+ if (err)
+ return err;
+
+ m=lst1->size;
+ n=lst2->size;
+ result = list_new(m+n);
+ if (!result){
+ list_delete(lst1);
+ list_delete(lst2);
+ return c_memory;
+ }
+ for(i=0;i<m;i++)
+ result->item[i] = lst1->item[i];
+ for(i=0;i<n;i++)
+ result->item[i+m] = lst2->item[i];
+
+ list_delete(lst1);
+ list_delete(lst2);
+ err = stack_add_val(stack,&result,list);
+ list_delete(result);
+ }
+
+ return err;
+ }
+
+ /**************************************************************************
+ *
* FUNCTION: list_fft
*
|