File: men_madial.c

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (87 lines) | stat: -rw-r--r-- 2,317 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/* Copyright INRIA */
#ifdef WIN32 
#include "wmen_scilab.h"
#else
#include "men_scilab.h"
#endif

int MatrixDialogWindow();

MADialog MAD;

/*************************************************     
 * Interface with Scilab 
 **********************************************************/

void C2F(xmatdg)(label,ptrlab,nlab,value,ptrv,descv,ptrdescv,desch,ptrdesch,nl,nc,res,ptrres,ierr)
     int *label,*ptrlab,*nlab,*value,*ptrv,*descv,*ptrdescv,*desch,*ptrdesch,*nl,*nc,*res,*ptrres,*ierr;
{
  int i,rep;
  int maxchars= *ierr;
  *ierr=0;
  MAD.nv = *nl*(*nc);
  /* conversion of scilab characters into strings */
  ScilabMStr2C(label,nlab,ptrlab,&(MAD.labels),ierr);
  if ( *ierr == 1) return;
  ScilabMStr2CM(descv,nl,ptrdescv,&(MAD.VDesc),ierr);
  if ( *ierr == 1) return;
  ScilabMStr2CM(desch,nc,ptrdesch,&(MAD.HDesc),ierr);
  if ( *ierr == 1) return;
  ScilabMStr2CM(value,&(MAD.nv),ptrv,&(MAD.data),ierr);
  if ( *ierr == 1) return;
  MAD.nl = *nl;
  MAD.nc = *nc;
  MAD.ierr = 0;
  rep = MatrixDialogWindow();
  if ( rep == FALSE || MAD.ierr == 1 )
    {
      *nl = 0;
    }
  else
    {
      ScilabCM2MStr(MAD.data,MAD.nv,res,ptrres,maxchars,ierr);
    }

  FREE(MAD.labels);
  for (i=0;i< MAD.nl*MAD.nc;i++) FREE(MAD.data[i]); FREE(MAD.data);
  for (i=0;i< MAD.nl;i++) FREE(MAD.VDesc[i]); FREE(MAD.VDesc);
  for (i=0;i< MAD.nc;i++) FREE(MAD.HDesc[i]); FREE(MAD.HDesc);
}

/*************************************************     
 * Test function 
 **********************************************************/

int TestMatrixDialogWindow()
{
  int rep,i;
  static char *labels = "LaBel";
  static char *vdesc[] = {
    "row 1","row 2","row 3",
    NULL
    };
  static char *hdesc[] = {
    "col 1","col 2",
    NULL
    };
  MAD.nl = 3;
  MAD.nc = 2;
  MAD.nv = MAD.nc*MAD.nl;
  MAD.labels = labels;
  MAD.VDesc = vdesc;
  MAD.HDesc = hdesc;
  /** Warning data must be allocated because 
    MatricDialogWindow will reallc it to store result **/
  MAD.data  = (char **) malloc((6+1)*sizeof(char *));
  if ( MAD.data == ( char **) 0 ) return(FALSE);
  for ( i = 0 ; i < 6 ; i++ )
    {
      MAD.data[i] = (char *) malloc(2*sizeof(char));
      if ( MAD.data[i] == ( char *) 0 ) return(FALSE);
      sprintf(MAD.data[i],"%1d",i);
    }
  MAD.data[6]= (char*)0;
  rep = MatrixDialogWindow();
  return(rep);
}