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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*@@
@file cctk_ParameterFunctions.h
@date Wed Sep 8 10:46:19 MSZ 1999
@author Andre Merzky
@desc
Public defines for parameter stuff
@enddesc
@version $Header$
@@*/
#ifndef _CCTK_PARAMETERFUNCTIONS_H
#define _CCTK_PARAMETERFUNCTIONS_H
/* this include file declares all parameter structs/defines which
* should be visible and useable for some thorn programmers.
* At first of all this means (read) access to parameter properties.
* Direct acces to parameter values (or its data pointers) are not
* allowed. The functions/declarations for this are in
* ParameterBindings.h, which in turn includes this file.
*/
/* thes SCOPE* defines are used as flags fo parameter scopes. */
#define SCOPE_GLOBAL 1 /* parameter is visible everywhere */
#define SCOPE_RESTRICTED 2 /* parameter is visible for friend thorns only */
#define SCOPE_PRIVATE 3 /* parameter is visible for parent thorn only */
#define SCOPE_NOT_GLOBAL 4 /* parameter is not visible everywhere */
#define SCOPE_ANY 5 /* parameter scope is undefined/arbitrary */
static char *cctk_parameter_scopes[] = {"GLOBAL", "RESTRICTED", "PRIVATE"};
/* parameter types */
#define PARAMETER_KEYWORD 1 /* parameter is keyword */
#define PARAMETER_STRING 2 /* parameter is string */
#define PARAMETER_SENTENCE 3 /* parameter is sentence */
#define PARAMETER_INT 4 /* parameter is integer */
#define PARAMETER_INTEGER 4 /* parameter is integer */
#define PARAMETER_REAL 5 /* parameter is float */
#define PARAMETER_BOOLEAN 6 /* parameter is bool */
static const char *cctk_parameter_type_names[] = {"KEYWORD",
"STRING",
"SENTENCE",
"INTEGER",
"REAL",
"BOOLEAN"};
/* what is a parameter range:
* list of independent ranges, each with
* - orig string (range)
* - active flag
* - description
*/
typedef struct RANGE
{
struct RANGE *last;
struct RANGE *next;
char *range;
char *origin;
int active;
char *description;
} t_range;
/* what are parameter properties:
* everything users may know about paras:
* - name
* - thorn it belongs to
* - scope
* - description
* - default value
* - type
* - range (see above)
* - number of times it has been set
* - steerable flag
*/
typedef struct PARAM_PROPS
{
char *name;
char *thorn;
int scope;
char *description;
char *defval;
int type;
t_range *range;
int n_set;
int steerable;
} t_param_prop;
#ifdef __cplusplus
extern "C" {
#endif
/* set the value of a parameter */
int ParameterSet (const char *name, /* The name of the parameter */
const char *thorn, /* The originating thorn */
const char *value); /* The value of the parameter */
/* get the data pointer to and type of a parameter's value */
void *ParameterGet (const char *name, /* The name of the parameter */
const char *thorn, /* The originating thorn */
int *type); /* Holds type of parameter */
/* walk through list of parameters */
const char *ParameterWalk(
int first, /* Get first parameter or not */
const char *origin); /* The origin of this walk */
/* get list of parameter names for given thorn */
int CCTK_ParameterList (const char* thorn, char ***paramlist, int *n_param);
/* get parameter properties for gven parameter/thorn pair */
t_param_prop *CCTK_ParameterInfo (const char *name,
const char *thorn);
#ifdef __cplusplus
}
#endif
#endif /* _CCTK_PARAMETERFUNCTIONS_H */
|