source: trunk/include/fortran/RpLibraryFInterface.h @ 83

Last change on this file since 83 was 83, checked in by dkearney, 19 years ago
  1. More cleaning of RpUnits and RpLibrary? code
  2. added rp_result code to c++/fortran/c code
  3. added rp_children, rp_lib_node[comp,type,id] for fortran code (need to test)
  4. adjusted convert function to recognize statements as follows:

convert("5J","neV")
convert("3.12075e+28neV","J")

  1. made joules a metric unit in RpUnits.cc
  2. tested examples/app-fermi/fortran/fermi.f with new rappture library.

added units conversion.

File size: 9.9 KB
Line 
1/*
2 * ----------------------------------------------------------------------
3 *  INTERFACE: Fortran Rappture Library Header
4 *
5 * ======================================================================
6 *  AUTHOR:  Derrick Kearney, Purdue University
7 *  Copyright (c) 2005
8 *  Purdue Research Foundation, West Lafayette, IN
9 * ======================================================================
10 */
11
12#include "RpLibrary.h"
13#include "RpDict.h"
14#include <string.h>
15#include <fstream>
16#include "RpFortranCommon.h"
17
18/*
19// rappture-fortran api
20*/
21
22#ifdef __cplusplus
23    extern "C" {
24#endif
25
26#ifdef COMPNAME_ADD1UNDERSCORE
27#   define rp_init                 rp_init_
28#   define rp_lib                  rp_lib_
29#   define rp_lib_element_comp     rp_lib_element_comp_
30#   define rp_lib_element_id       rp_lib_element_id_
31#   define rp_lib_element_type     rp_lib_element_type_
32#   define rp_lib_element_obj      rp_lib_element_obj_
33#   define rp_lib_child_num        rp_lib_child_num_
34#   define rp_lib_child_comp       rp_lib_child_comp_
35#   define rp_lib_child_id         rp_lib_child_id_
36#   define rp_lib_child_type       rp_lib_child_type_
37#   define rp_lib_child_obj        rp_lib_child_obj_
38#   define rp_lib_get              rp_lib_get_
39#   define rp_lib_get_double       rp_lib_get_double_
40#   define rp_lib_put_str          rp_lib_put_str_
41#   define rp_lib_put_id_str       rp_lib_put_id_str_
42#   define rp_lib_put_obj          rp_lib_put_obj_
43#   define rp_lib_put_id_obj       rp_lib_put_id_obj_
44#   define rp_lib_remove           rp_lib_remove_
45#   define rp_lib_xml_len          rp_lib_xml_len_
46#   define rp_lib_write_xml        rp_lib_write_xml_
47#   define rp_lib_xml              rp_lib_xml_
48#   define rp_lib_node_comp        rp_lib_node_comp_
49#   define rp_lib_node_type        rp_lib_node_type_
50#   define rp_lib_node_id          rp_lib_node_id_
51#   define rp_result               rp_result_
52#   define rp_quit                 rp_quit_
53#elif defined(COMPNAME_ADD2UNDERSCORE)
54#   define rp_init                 rp_init__
55#   define rp_lib                  rp_lib__
56#   define rp_lib_element_comp     rp_lib_element_comp__
57#   define rp_lib_element_id       rp_lib_element_id__
58#   define rp_lib_element_type     rp_lib_element_type__
59#   define rp_lib_element_obj      rp_lib_element_obj__
60#   define rp_lib_child_num        rp_lib_child_num__
61#   define rp_lib_child_comp       rp_lib_child_comp__
62#   define rp_lib_child_id         rp_lib_child_id__
63#   define rp_lib_child_type       rp_lib_child_type__
64#   define rp_lib_child_obj        rp_lib_child_obj__
65#   define rp_lib_get              rp_lib_get__
66#   define rp_lib_get_double       rp_lib_get_double__
67#   define rp_lib_put_str          rp_lib_put_str__
68#   define rp_lib_put_id_str       rp_lib_put_id_str__
69#   define rp_lib_put_obj          rp_lib_put_obj__
70#   define rp_lib_put_id_obj       rp_lib_put_id_obj__
71#   define rp_lib_remove           rp_lib_remove__
72#   define rp_lib_xml_len          rp_lib_xml_len__
73#   define rp_lib_write_xml        rp_lib_write_xml__
74#   define rp_lib_xml              rp_lib_xml__
75#   define rp_lib_node_comp        rp_lib_node_comp__
76#   define rp_lib_node_type        rp_lib_node_type__
77#   define rp_lib_node_id          rp_lib_node_id__
78#   define rp_result               rp_result__
79#   define rp_quit                 rp_quit__
80#elif defined(COMPNAME_NOCHANGE)
81#   define rp_init                 rp_init
82#   define rp_lib                  rp_lib
83#   define rp_lib_element_comp     rp_lib_element_comp
84#   define rp_lib_element_id       rp_lib_element_id
85#   define rp_lib_element_type     rp_lib_element_type
86#   define rp_lib_element_obj      rp_lib_element_obj
87#   define rp_lib_child_num        rp_lib_child_num
88#   define rp_lib_child_comp       rp_lib_child_comp
89#   define rp_lib_child_id         rp_lib_child_id
90#   define rp_lib_child_type       rp_lib_child_type
91#   define rp_lib_child_obj        rp_lib_child_obj
92#   define rp_lib_get              rp_lib_get
93#   define rp_lib_get_double       rp_lib_get_double
94#   define rp_lib_put_str          rp_lib_put_str
95#   define rp_lib_put_id_str       rp_lib_put_id_str
96#   define rp_lib_put_obj          rp_lib_put_obj
97#   define rp_lib_put_id_obj       rp_lib_put_id_obj
98#   define rp_lib_remove           rp_lib_remove
99#   define rp_lib_xml_len          rp_lib_xml_len
100#   define rp_lib_write_xml        rp_lib_write_xml
101#   define rp_lib_xml              rp_lib_xml
102#   define rp_lib_node_comp        rp_lib_node_comp
103#   define rp_lib_node_type        rp_lib_node_type
104#   define rp_lib_node_id          rp_lib_node_id
105#   define rp_result               rp_result
106#   define rp_quit                 rp_quit
107#elif defined(COMPNAME_UPPERCASE)
108#   define rp_init                 RP_INIT
109#   define rp_lib                  RP_LIB
110#   define rp_lib_element_comp     RP_LIB_ELEMENT_COMP
111#   define rp_lib_element_id       RP_LIB_ELEMENT_ID
112#   define rp_lib_element_type     RP_LIB_ELEMENT_TYPE
113#   define rp_lib_element_obj      RP_LIB_ELEMENT_OBJ
114#   define rp_lib_child_num        RP_LIB_CHILD_NUM
115#   define rp_lib_child_comp       RP_LIB_CHILD_COMP
116#   define rp_lib_child_id         RP_LIB_CHILD_ID
117#   define rp_lib_child_type       RP_LIB_CHILD_TYPE
118#   define rp_lib_child_obj        RP_LIB_CHILD_OBJ
119#   define rp_lib_get              RP_LIB_GET
120#   define rp_lib_get_double       RP_LIB_GET_DOUBLE
121#   define rp_lib_put_str          RP_LIB_PUT_STR
122#   define rp_lib_put_id_str       RP_LIB_PUT_ID_STR
123#   define rp_lib_put_obj          RP_LIB_PUT_OBJ
124#   define rp_lib_put_id_obj       RP_LIB_PUT_ID_OBJ
125#   define rp_lib_remove           RP_LIB_REMOVE
126#   define rp_lib_xml_len          RP_LIB_XML_LEN
127#   define rp_lib_write_xml        RP_LIB_WRITE_XML
128#   define rp_lib_xml              RP_LIB_XML
129#   define rp_lib_node_comp        RP_LIB_NODE_COMP
130#   define rp_lib_node_type        RP_LIB_NODE_TYPE
131#   define rp_lib_node_id          RP_LIB_NODE_ID
132#   define rp_result               RP_RESULT
133#   define rp_quit                 RP_QUIT
134#endif
135
136
137void rp_init();
138
139int rp_lib ( const char* filePath, int filePath_len );
140
141void rp_lib_element_comp (  int* handle,
142                            char* path,
143                            char* retText,
144                            int path_len,
145                            int retText_len );
146
147void rp_lib_element_id (    int* handle,
148                            char* path,
149                            char* retText,
150                            int path_len,
151                            int retText_len );
152
153void rp_lib_element_type (  int* handle,
154                            char* path,
155                            char* retText,
156                            int path_len,
157                            int retText_len );
158
159int rp_lib_element_obj (    int* handle,
160                            char* path,
161                            int path_len );
162
163int rp_lib_child_num (      int* handle,
164                            char* path,
165                            int* childHandle,
166                            int path_len);
167
168int rp_lib_children (       int* handle, /* integer handle of library */
169                            char* path, /* search path of the xml */
170                            int* childHandle, /*int handle of last returned child*/
171                            int path_len  /*length of the search path buffer*/
172                    );
173
174
175void rp_lib_get (           int* handle,
176                            char* path,
177                            char* retText,
178                            int path_len,
179                            int retText_len );
180
181double rp_lib_get_double (  int* handle,
182                            char* path,
183                            int path_len);
184
185void rp_lib_put_str (       int* handle,
186                            char* path,
187                            char* value,
188                            int* append,
189                            int path_len,
190                            int value_len );
191
192void rp_lib_put_id_str (    int* handle,
193                            char* path,
194                            char* value,
195                            char* id,
196                            int* append,
197                            int path_len,
198                            int value_len,
199                            int id_len );
200
201void rp_lib_put_obj (       int* handle,
202                            char* path,
203                            int* valHandle,
204                            int* append,
205                            int path_len );
206
207void rp_lib_put_id_obj (    int* handle,
208                            char* path,
209                            int* valHandle,
210                            char* id,
211                            int* append,
212                            int path_len,
213                            int id_len );
214
215int rp_lib_remove (         int* handle,
216                            char* path,
217                            int path_len);
218
219int rp_lib_xml_len(         int* handle);
220
221void rp_lib_xml(            int* handle,
222                            char* retText,
223                            int retText_len);
224
225int rp_lib_write_xml(       int* handle,
226                            char* outFile,
227                            int outFile_len);
228
229void rp_lib_node_comp (     int* handle,
230                            char* retText,
231                            int retText_len);
232
233void rp_lib_node_type (     int* handle,
234                            char* retText,
235                            int retText_len);
236
237void rp_lib_node_id (       int* handle,
238                            char* retText,
239                            int retText_len);
240
241void rp_result(             int* handle );
242
243void rp_quit();
244
245
246/**********************************************************/
247
248/**********************************************************/
249
250// private member functions
251int objType( char* flavor);
252
253int storeObject_Lib(RpLibrary* objectName);
254RpLibrary* getObject_Lib(int objKey);
255
256// global vars
257// dictionary to hold the python objects that
258// cannot be sent to fortran
259
260#define DICT_TEMPLATE <int,RpLibrary*>
261RpDict DICT_TEMPLATE fortObjDict_Lib;
262
263#ifdef __cplusplus
264    }
265#endif
Note: See TracBrowser for help on using the repository browser.