NEURON
consist.cpp
Go to the documentation of this file.
1
#include <../../nrnconf.h>
2
/* /local/src/master/nrn/src/modlunit/consist.c,v 1.2 1995/09/05 20:24:01 hines Exp */
3
4
/*
5
* Check that names do not have conflicting types. This is done after the
6
* entire file is read in and allows declaring a variable after its use (very
7
* bad style) to work.
8
*/
9
#include "
model.h
"
10
#include "parse1.hpp"
11
#include "
symbol.h
"
12
13
extern
Item
**
scop_indep
;
14
15
#define con(arg1, arg2, arg3) \
16
if (t & (arg2)) \
17
if (t & (~(arg2 | arg3))) { \
18
Fprintf(stderr, "%s is a %s\n"
, s->name, arg1); \
19
err = 1; \
20
}
21
22
void
consistency
() {
23
int
tu, err = 0;
24
long
t
;
25
Symbol
* sindep;
26
27
28
/* the scop_indep can also be a automatic constant */
29
sindep =
SYM
(
scop_indep
[0]);
30
if
(sindep !=
indepsym
&& sindep->
subtype
== (
modlunitCONST
|
INDEP
)) {
31
sindep->
subtype
=
INDEP
;
32
}
33
34
SYMITERALL
{
35
t
=
s
->subtype;
36
con
(
"KEYWORD"
,
KEYWORD
, 0);
37
con
(
"CONSTANT"
,
modlunitCONST
,
ARRAY
);
38
con
(
"INDEPENDENT"
,
INDEP
, 0);
39
con
(
"DEPENDENT"
,
DEP
,
ARRAY
);
40
con
(
"STATE"
,
STAT
,
ARRAY
);
41
con
(
"FUNCTION"
,
FUNCT
, 0);
42
con
(
"PROCEDURE"
,
PROCED
, 0);
43
con
(
"DERIVATIVE"
,
DERF
, 0);
44
con
(
" KINETIC"
,
KINF
, 0);
45
con
(
"LINEAR"
,
LINF
, 0);
46
con
(
"NONLINEAR"
,
NLINF
, 0);
47
con
(
"DISCRETE"
,
DISCF
, 0);
48
con
(
"PARTIAL"
,
PARF
, 0);
49
tu =
s
->usage;
50
if
((tu &
DEP
) && (tu &
FUNCT
))
51
diag
(
s
->name,
"used as both variable and function"
);
52
if
((
t
== 0) && tu)
53
Fprintf
(stderr,
"Warning: %s undefined. (declared within VERBATIM?)\n"
,
s
->name);
54
}
55
}
56
if
(err) {
57
diag
(
"multiple uses for same variable"
, (
char
*) 0);
58
}
59
if
(
indepsym
==
SYM0
) {
60
diag
(
"Independent variable is not defined"
, (
char
*) 0);
61
}
62
}
63
64
/* consist.c,v
65
* Revision 1.2 1995/09/05 20:24:01 hines
66
* paramter arrays and limits syntax is now < a, b >
67
*
68
* Revision 1.1.1.1 1994/10/12 17:22:47 hines
69
* NEURON 3.0 distribution
70
*
71
* Revision 1.1 90/11/13 16:09:24 hines
72
* Initial revision
73
* */
DEP
#define DEP
Definition:
membfunc.hpp:64
model.h
DERF
#define DERF
Definition:
model.h:114
FUNCT
#define FUNCT
Definition:
model.h:108
SYM0
#define SYM0
Definition:
model.h:63
LINF
#define LINF
Definition:
model.h:115
STAT
#define STAT
Definition:
model.h:106
DISCF
#define DISCF
Definition:
model.h:117
INDEP
#define INDEP
Definition:
model.h:104
modlunitCONST
#define modlunitCONST
Definition:
model.h:103
PARF
#define PARF
Definition:
model.h:118
SYM
#define SYM(q)
Definition:
model.h:75
KINF
#define KINF
Definition:
model.h:120
KEYWORD
#define KEYWORD
Definition:
model.h:102
NLINF
#define NLINF
Definition:
model.h:116
ARRAY
#define ARRAY
Definition:
model.h:107
PROCED
#define PROCED
Definition:
model.h:109
scop_indep
Item ** scop_indep
Definition:
declare.cpp:9
con
#define con(arg1, arg2, arg3)
Definition:
consist.cpp:15
consistency
void consistency()
Definition:
consist.cpp:22
SYMITERALL
#define SYMITERALL
Definition:
symbol.h:4
coreneuron::t
double t
Definition:
register_mech.cpp:23
indepsym
Symbol * indepsym
Definition:
declare.cpp:8
symbol.h
diag
#define diag(s)
Definition:
nonlin.cpp:19
s
s
Definition:
multisend.cpp:521
Item
Definition:
model.h:8
Symbol
Definition:
model.h:47
Symbol::subtype
long subtype
Definition:
model.h:49
Fprintf
int Fprintf(FILE *stream, const char *fmt, Args... args)
Definition:
logger.hpp:8
src
modlunit
consist.cpp