shared_variables
Module
Description
$Id$
This module is an interface to allow modules to register pointers to their internal variables so that other modules may then request them by name.
This uses a linked list of pointers and is neither efficient nor easy to use. THIS IS ON PURPOSE (a deterrent)!
The main point of using shared variables is that it avoids unnecesary dependencies between modules!
Shared variable should always be avoided for portability and generality reasons. This module allows for the possibility when needs must but tries to protect agains screw ups that can derive from shared quantities.
When used, modules should call the get and put routines at initialize_* time for optimal performance.
Variables to be added to the list must have the target property And a pointer must be provided when getting a variable from the list.
For a list of currently supported datatypes, see below in the interfaces section. It is not recommended to share 3D or 4D data this way.
19-jul-06/tony: coded
Quick access
- Types:
- Variables:
fetch_profile,get_shared_variable,initialize_shared_variables,ishvar_err_duplicate,ishvar_err_nosuchvar,ishvar_err_notassociated,ishvar_err_wrongtype,ishvar_type_char0d,ishvar_type_int0d,ishvar_type_int1d,ishvar_type_int2d,ishvar_type_int3d,ishvar_type_log0d,ishvar_type_log1d,ishvar_type_log2d,ishvar_type_log3d,ishvar_type_real0d,ishvar_type_real1d,ishvar_type_real2d,ishvar_type_real3d,ishvar_type_real4d,put_shared_variable,shared_variable_list,sharedvars_clean_up,sharedvars_error_string
Needed modules
Types
- type sharedvariables/shared_variable_list
Shared variable metadata
- Type fields:
% char0d [character,pointer]
% int0d [integer,pointer]
% int1d (*) [integer,pointer]
% int3d (,,*) [integer,pointer]
% log0d [logical,pointer]
% log1d (*) [logical,pointer]
% log2d (,) [logical,pointer]
% log3d (,,*) [logical,pointer]
% next [shared_variable_list,pointer]
% real0d [real,pointer]
% real1d (*) [real,pointer]
% real2d (,) [real,pointer]
% real3d (,,*) [real,pointer]
% real4d (,,*,*) [real,pointer]
% scaller [character,optional/default=’’]
% thelist [shared_variable_list,pointer]
% varname [character]
% vartype [integer]
Variables
- sharedvariables/fetch_profile [public]
- sharedvariables/get_shared_variable [public]
- sharedvariables/initialize_shared_variables [public]
- sharedvariables/ishvar_err_duplicate [integer,parameter=3]
- sharedvariables/ishvar_err_nosuchvar [integer,parameter=1]
- sharedvariables/ishvar_err_notassociated [integer,parameter=4]
- sharedvariables/ishvar_err_wrongtype [integer,parameter=2]
- sharedvariables/ishvar_type_char0d [integer,private/parameter/optional/default=30]
- sharedvariables/ishvar_type_int0d [integer,private/parameter/optional/default=10]
- sharedvariables/ishvar_type_int1d [integer,private/parameter/optional/default=11]
- sharedvariables/ishvar_type_int2d [integer,private/parameter/optional/default=12]
- sharedvariables/ishvar_type_int3d [integer,private/parameter/optional/default=13]
- sharedvariables/ishvar_type_log0d [integer,private/parameter/optional/default=20]
- sharedvariables/ishvar_type_log1d [integer,private/parameter/optional/default=21]
- sharedvariables/ishvar_type_log2d [integer,private/parameter/optional/default=22]
- sharedvariables/ishvar_type_log3d [integer,private/parameter/optional/default=23]
- sharedvariables/ishvar_type_real0d [integer,private/parameter/optional/default=1]
- sharedvariables/ishvar_type_real1d [integer,private/parameter/optional/default=2]
- sharedvariables/ishvar_type_real2d [integer,private/parameter/optional/default=3]
- sharedvariables/ishvar_type_real3d [integer,private/parameter/optional/default=4]
- sharedvariables/ishvar_type_real4d [integer,private/parameter/optional/default=5]
- sharedvariables/put_shared_variable [public]
- sharedvariables/shared_variable_list [private]
- sharedvariables/sharedvars_clean_up [public]
- sharedvariables/sharedvars_error_string [public]