Xcos: "Region to superblock" fixed
[scilab.git] / scilab / modules / scicos / includes / import.h
1 /*  Scicos
2 *
3 *  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 *
19 * See the file ./license.txt
20 */
21 #ifndef __IMPORT_H__
22 #define __IMPORT_H__
23
24 #include "machine.h"
25
26 #include "dynlib_scicos.h"
27
28 #include "scicos_block4.h"
29
30 typedef struct
31 {
32     int lnk;
33     int pos;
34 } outtb_el;
35
36 typedef struct
37 {
38     double* x;            /* continuous state */
39     int *nx;          /* length of continuous state  */
40     int * xptr;        /* vector of pointers on block states */
41     int * zcptr;       /* vector of pointers on block zero crosses */
42     double* z;            /* discrete state */
43     int *nz;          /* length of discrete state */
44     int* zptr;        /* vector of pointers on block states */
45     int *noz;         /* scalar number of object discrete states */
46     void **oz;            /* pointer array of object discrete states */
47     int *ozsz;        /* vector of dimension of object discrete states */
48     int *oztyp;       /* vector of type of object discrete states */
49     int *ozptr;       /* vector of pointers on object discrete states */
50     double* g;            /* zero crossing state */
51     int *ng;          /* length of zero crossing register */
52     int* mod;         /* modes of the blocks */
53     int *nmod;        /* length of mod register */
54     int* modptr;      /* vector of pointers */
55     char** iz;          /* vectors of labels */
56     int* izptr;       /* vector of pointers on block labels */
57     char** uid;         /* vectors of uids */
58     int* uidptr;      /* vector of pointers on block uids */
59     int* inpptr;      /* vector of pointers on block inputs */
60     int* inplnk;      /* vector of pointers on input link */
61     int* outptr;      /* vector of pointers on block outputs */
62     int* outlnk;      /* vector of pointers on output link */
63     double * rpar;        /* vector of real parameters */
64     int* rpptr;       /* vector of pointers on block real parameters */
65     int* ipar;        /* vector of integer parameters */
66     int* ipptr;       /* vector of pointers on block integer parameters */
67     void **opar;          /* pointer array of object parameters */
68     int *oparsz;      /* vector of dimension of object parameters */
69     int *opartyp;     /* vector of type of object parameters */
70     int *opptr;       /* vector of pointers on object parameters */
71     int *nblk;        /* number of  blocks */
72     void **outtbptr;      /* vector of pointer of object of outtb */
73     int *outtbsz;     /* vector of size of object of outtb */
74     int *outtbtyp;    /* vector of type of object of outtb */
75     int *nlnk;        /* number of object of outtb */
76     int* subs;        /*  */
77     int *nsubs;       /*  */
78     double* tevts;        /*  */
79     int* evtspt;      /*  */
80     int *nevts;       /*  */
81     int *pointi;      /*  */
82     int *iord;        /*  */
83     int *niord;       /*  */
84     int *oord;        /*  */
85     int *noord;       /*  */
86     int *zord;        /*  */
87     int *nzord;       /*  */
88     int *funptr;      /* block indexes */
89     int *funtyp;      /* block types */
90     int *ztyp;        /* block types */
91     int *cord;        /* block types */
92     int *ncord;       /* */
93     int *ordclk;      /* block types */
94     int *nordclk;     /* size of ordclk */
95     int *clkptr;      /* block types */
96     int *ordptr;      /* block types */
97     int *nordptr;     /* */
98     int *critev;      /* block types */
99     int *iwa;         /* integer work space of size nevts */
100     int *mask;        /* integer work space ng for mask */
101     scicos_block *blocks; /* scicos_block structure ptr */
102     double *t0;           /* scalar initial time of simulation  */
103     double *tf;           /* scalar final time of simulation    */
104     double *Atol;         /* scalar absolute tolerance of solvers of diff. equa. */
105     double *rtol;         /* scalar relative tolerance of solvers of diff. equa. */
106     double *ttol;         /* scalar time tolerance of solvers of diff. equa. */
107     double *deltat;       /* deltat */
108     double *hmax;         /* hmax */
109     outtb_el *outtb_elem; /* table (of size 2) coding each indexes of element of matrix in a same array */
110     int *nelem;       /* total unit element */
111     int *xprop;       /* xproperties (of size nx) */
112     double *xd;           /* derivative of continuous state */
113 } ScicosImport;
114
115 SCICOS_IMPEXP ScicosImport* getscicosimportptr(void);
116
117 SCICOS_IMPEXP int getscicosvarsfromimport(char *what, void **v, int *nv, int *mv);
118
119 SCICOS_IMPEXP void C2F(getouttb)(int *nsize, int *nvec, double *outtc);
120
121 SCICOS_IMPEXP void C2F(getlabel)(int *kfun, char *label, int *n);
122
123 SCICOS_IMPEXP int getscilabel(int *kfun, char *label, int *n);
124
125 #endif /* __IMPORT_H__ */