Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
xData.h
Go to the documentation of this file.
1 /*
2 # <<BEGIN-copyright>>
3 # Copyright (c) 2010, Lawrence Livermore National Security, LLC.
4 # Produced at the Lawrence Livermore National Laboratory
5 # Written by Bret R. Beck, beck6@llnl.gov.
6 # CODE-461393
7 # All rights reserved.
8 #
9 # This file is part of GIDI. For details, see nuclear.llnl.gov.
10 # Please also read the "Additional BSD Notice" at nuclear.llnl.gov.
11 #
12 # Redistribution and use in source and binary forms, with or without modification,
13 # are permitted provided that the following conditions are met:
14 #
15 # 1) Redistributions of source code must retain the above copyright notice,
16 # this list of conditions and the disclaimer below.
17 # 2) Redistributions in binary form must reproduce the above copyright notice,
18 # this list of conditions and the disclaimer (as noted below) in the
19 # documentation and/or other materials provided with the distribution.
20 # 3) Neither the name of the LLNS/LLNL nor the names of its contributors may be
21 # used to endorse or promote products derived from this software without
22 # specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
25 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
27 # SHALL LAWRENCE LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
28 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
31 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33 # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 # <<END-copyright>>
35 */
36 #ifndef xData_h_included
37 #define xData_h_included
38 
39 #if defined __cplusplus
40  extern "C" {
41 #endif
42 
43 #include <expat.h>
44 #include "statusMessageReporting.h"
45 
46 #if defined __cplusplus
47  namespace GIDI {
48 #endif
49 
50 typedef int xData_Int;
51 
52 #ifndef XMLCALL
53 #define XMLCALL
54 #endif
55 
56 #ifndef XML_Char
57 #define XML_Char char
58 #endif
59 
60 #ifndef XML_Size
61 #define XML_Size long
62 #endif
63 
64 //TK move follwoing reference from source
65 //extern char const * const xData_oned_x_ID;
66 //extern char const * const xData_twod_xy_ID;
67 //extern char const * const xData_twod_xindex_y_ID;
68 //extern char const * const xData_twod_xShared_yHistogram_ID;
69 //extern char const * const xData_matrix_ID;
70 
71 const char * const xData_oned_x_ID = "1d.x";
72 const char * const xData_twod_xy_ID = "2d.xy";
73 const char * const xData_twod_xindex_y_ID = "2d.xindex_y";
74 const char * const xData_twod_xShared_yHistogram_ID = "2d_xShared_yHistogram";
75 const char * const xData_matrix_ID = "matrix";
76 
82 
88 typedef struct xData_text_s xData_text;
89 typedef struct xDataType_s xDataType;
90 typedef struct xData_smr_s xData_smr;
92 typedef struct xData_item_s xData_item;
98 
99 typedef int (*xData_sortElementFunc)( const void *, const void * );
100 
103  double value;
104 };
105 
107  xData_Int row, start, end;
108 };
109 
111  xData_Int rows, columns;
113  double *values;
114 };
115 
117  size_t line;
118  size_t column;
119 };
120 
122  char *name;
123  char *value;
124 };
125 
127  int number;
128  size_t size;
130 };
131 
132 struct xData_text_s {
134  size_t allocated;
135  size_t length;
136  char *text;
137 };
138 
139 typedef int (*xData_xDataTypeOk)( char const *name, xData_document *doc, void *userData );
141 typedef char *(*xDT_toStringFunction)( statusMessageReporting *smr, xDataType * );
143 
146  const char *sortString;
147 };
148 
150  int n;
152 };
153 
154 struct xDataType_s {
156  const char *typeString;
161  signed char indexPresent, startPresent, endPresent, lengthPresent;
162  xData_Int index, start, end, length;
163  void *data;
164 };
165 
170  int depth;
174 };
175 
178  int ordinal; /* Counting from 0. */
179  int index; /* Value from "index" attribute if present or -1 */
180  int accessed; /* For the convenience of the users, not used internally. */
184  char *name; /* Allocated in xData_parseAddElementToRoot. */
185  char *fullName; /* Allocated in xData_parseAddElementToRoot. */
186  xData_attributionList attributes; /* attributes->abbributes is allocated in xData_parseAddElementToRoot. */
188  size_t textOffset;
190 };
191 
192 struct xData_smr_s {
195 };
196 
199  enum xData_errorCodes error;
200  enum XML_Error err;
201  XML_Size err_line, err_column;
202  char *fileName;
210 };
211 
212 struct xData_item_s {
215  enum xData_itemMode mode;
216  size_t textOffset;
217  size_t textLength;
218  char *text;
219 };
220 
221 xData_document *xData_parseReadFile( statusMessageReporting *smr, const char *fileName, xData_xDataTypeOk func, void *userData );
226 void *xData_parseFree( statusMessageReporting *smr, xData_document *xData_doc );
227 int xData_parse( xData_document *xData_doc, const char *s );
228 int xData_parseIsError( xData_document *xData_doc );
234 char *xData_getAttributesValue( xData_attributionList *attributes, const char *name );
235 const char *xData_getAttributesValueInElement( xData_element *element, const char *name );
242 int xData_getCommonData( statusMessageReporting *smr, xData_element *element, xData_Int *index, xData_Int *start, xData_Int *end,
243  xData_Int *length );
246 int xData_convertAttributeToDouble( statusMessageReporting *smr, xData_element *element, const char *name, double *d );
247 int xData_numberOfElementsByTagName( statusMessageReporting *smr, xData_element *element, const char *tagName );
250  const char *sortAttributeName, xData_sortElementFunc sortFunction );
253 int xData_addToAccessed( statusMessageReporting *smr, xData_element *element, int increment );
255 
257 int xData_is_1d_x( statusMessageReporting *smr, xDataType *xDT, int setMsg );
258 int xData_isElement_1d_x( statusMessageReporting *smr, xData_element *element, int setMsg );
259 int xData_1d_x_copyData( statusMessageReporting *smr, xData_element *element, xData_Int nAllocatedBytes, double *d );
262 
264 int xData_is_2d_xindex_y( statusMessageReporting *smr, xDataType *xDT, int setMsg );
265 int xData_isElement_2d_xindex_y( statusMessageReporting *smr, xData_element *element, int setMsg );
268 double *xData_2d_xindex_y_toXYs( statusMessageReporting *smr, xData_element *element, double *Xs );
269 double *xData_2d_xindex_y_toFilledYs( statusMessageReporting *smr, xData_element *element, double *Xs );
271 double *xData_2d_xindex_y_toFilledXYs( statusMessageReporting *smr, xData_element *element, double *Xs );
272 
274 int xData_is_2d_xy( statusMessageReporting *smr, xDataType *xDT, int setMsg );
275 int xData_isElement_2d_xy( statusMessageReporting *smr, xData_element *element, int setMsg );
278 
284 double *xData_2d_xShared_yHistogram_toFilledXYs( xDataType *xDT, xData_Int nXs, double *Xs );
285 
287 int xData_is_matrix( statusMessageReporting *smr, xDataType *xDT, int setMsg );
288 int xData_isElement_matrix( statusMessageReporting *smr, xData_element *element, int setMsg );
292 
293 int xData_is_xDataType( statusMessageReporting *smr, xDataType *xDT, char const * const type, int setMsg );
294 char const *xData_getFileName( xData_document *doc );
295 int xData_setFileName( statusMessageReporting *smr, xData_document *doc, char const *fileName );
299 
300 int xData_stringTo_xData_Int( statusMessageReporting *smr, void *smrUserInterface, char const *c, xData_Int *value, char const *endings, char **e );
301 int xData_stringTo_double( statusMessageReporting *smr, void *smrUserInterface, char const *c, double *value, char const *endings, char **e );
302 
303 /*
304 * Stuff in xDataMisc.c
305 */
306 void *xData_malloc( statusMessageReporting *smr, size_t size, int zero, const char *forItem, const char *file, int line );
307 void *xData_realloc( statusMessageReporting *smr, void *pOld, size_t size, const char *forItem, const char *routine, int line );
308 void *xData_free( statusMessageReporting *smr, void *p );
309 char *xDataMisc_allocateCopyString( statusMessageReporting *smr, const char *s, const char *forItem, const char *routine, int line );
310 char *xDataMisc_getAbsPath( statusMessageReporting *smr, const char *fileName );
311 int xData_setMessageError_ReturnInt( int value, statusMessageReporting *smr, void *userData, const char *file, int line, int code, const char *fmt, ... );
312 
313 #define xData_malloc2( smr, size, zero, forItem ) xData_malloc( smr, size, zero, forItem, __FILE__, __LINE__ )
314 #define xData_realloc2( smr, old, size, forItem ) xData_realloc( smr, old, size, forItem, __FILE__, __LINE__ )
315 #define xDataMisc_allocateCopyString2( smr, s, forItem ) xDataMisc_allocateCopyString( smr, s, forItem, __FILE__, __LINE__ )
316 
317 #if defined __cplusplus
318  }
319  }
320 #endif
321 
322 #endif /* End of xData_h_included. */
size_t column
Definition: xData.h:118
void * xData_parseFree(statusMessageReporting *smr, xData_document *xData_doc)
Definition: xData.cc:208
const char *const xData_twod_xShared_yHistogram_ID
Definition: xData.h:74
char * xDataMisc_allocateCopyString(statusMessageReporting *smr, const char *s, const char *forItem, const char *routine, int line)
Definition: xDataMisc.cc:97
int xData_is_2d_xindex_y(statusMessageReporting *smr, xDataType *xDT, int setMsg)
size_t length
Definition: xData.h:135
int xData_xDataTypeConvertAttributes(statusMessageReporting *smr, xData_element *element)
Definition: xData.cc:668
xData_element * xData_getFirstElement(xData_element *element)
Definition: xData.cc:477
void * xData_get_smrUserInterfaceFromElement(xData_element *element)
Definition: xData.cc:952
char * fileName
Definition: xData.h:202
xData_document * xData_doc
Definition: xData.h:167
int getRowStartEndAtIndex(statusMessageReporting *smr, xDataType *xDT, xData_Int index, xData_Int *row, xData_Int *start, xData_Int *end)
int(* xData_xDataTypeOk)(char const *name, xData_document *doc, void *userData)
Definition: xData.h:139
int xData_2d_xindex_y_free_toFilledYs(statusMessageReporting *smr, void *data)
int xData_initializeAttributionList(statusMessageReporting *smr, xData_attributionList *attributes)
Definition: xData.cc:554
size_t line
Definition: xData.h:117
char * value
Definition: xData.h:123
void * xDataTypeOk_userData
Definition: xData.h:204
double * values
Definition: xData.h:113
int xData_init_1d_x(statusMessageReporting *smr, xData_element *element)
Definition: xData_1d_x.cc:54
xData_Int start
Definition: xData.h:162
size_t textOffset
Definition: xData.h:216
xData_element * parentElement
Definition: xData.h:168
xData_rootElement * currentRoot
Definition: xData.h:209
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
xData_status
Definition: xData.h:77
const XML_Char * s
int xData_2d_xindex_y_free_rawIndices(statusMessageReporting *smr, void *data)
const char * p
Definition: xmltok.h:285
double * xData_2d_xindex_y_toFilledXYs(statusMessageReporting *smr, xData_element *element, double *Xs)
double * xData_2d_xShared_yHistogram_copyData(statusMessageReporting *smr, xData_element *element, xData_Int *n)
char *(* xDT_toStringFunction)(statusMessageReporting *smr, xDataType *)
Definition: xData.h:141
xData_element * xData_getOneElementByTagName(statusMessageReporting *smr, xData_element *element, char *name, int required)
Definition: xData.cc:810
smr_userInterface smrUserInterface
Definition: xData.h:193
xData_document * xData_parseString(statusMessageReporting *smr, const char *str, xData_xDataTypeOk func, void *userData)
Definition: xData.cc:123
int xData_copyAttributionList(statusMessageReporting *smr, xData_attributionList *dest, xData_attributionList *src)
Definition: xData.cc:564
size_t allocated
Definition: xData.h:134
const char * sortString
Definition: xData.h:146
int xData_init_2d_xShared_yHistogram(statusMessageReporting *smr, xData_element *element)
xData_rootElement root
Definition: xData.h:208
xData_matrix_rowStartEnd * rowStartEnds
Definition: xData.h:112
int xData_is_xDataType(statusMessageReporting *smr, xDataType *xDT, char const *const type, int setMsg)
Definition: xData.cc:900
double * xData_2d_xindex_y_toFilledYs(statusMessageReporting *smr, xData_element *element, double *Xs)
const XML_Char * name
int xData_1d_x_copyData(statusMessageReporting *smr, xData_element *element, xData_Int nAllocatedBytes, double *d)
Definition: xData_1d_x.cc:84
xData_document * xData_parseReadFile(statusMessageReporting *smr, const char *fileName, xData_xDataTypeOk func, void *userData)
Definition: xData.cc:84
xData_Int * xData_2d_xindex_y_rawIndices(statusMessageReporting *smr, xData_element *element)
int xData_matrix_free_copyData(statusMessageReporting *smr, void *data)
int xData_isElement_2d_xy(statusMessageReporting *smr, xData_element *element, int setMsg)
Definition: xData_2d_xy.cc:77
int xData_numberOfElementsByTagName(statusMessageReporting *smr, xData_element *element, const char *tagName)
Definition: xData.cc:750
const char *const xData_twod_xindex_y_ID
Definition: xData.h:73
int xData_isElement_2d_xindex_y(statusMessageReporting *smr, xData_element *element, int setMsg)
#define userData
Definition: xmlparse.cc:555
void * xData_free(statusMessageReporting *smr, void *p)
Definition: xDataMisc.cc:89
int xData_parseInitialize(statusMessageReporting *smr, xData_document *xData_doc, xData_xDataTypeOk func, void *userData)
Definition: xData.cc:157
const char * xData_getAttributesValueInElement(xData_element *element, const char *name)
Definition: xData.cc:546
int xData_1d_x_free_copyData(statusMessageReporting *smr, void *data)
Definition: xData_1d_x.cc:122
xData_element * element
Definition: xData.h:214
xDT_toStringFunction toString
Definition: xData.h:159
double * xData_2d_xy_allocateCopyData(statusMessageReporting *smr, xData_element *element, xData_Int *length)
Definition: xData_2d_xy.cc:84
char * name
Definition: xData.h:184
int xData_parseIsError(xData_document *xData_doc)
Definition: xData.cc:469
int xData_is_matrix(statusMessageReporting *smr, xDataType *xDT, int setMsg)
Definition: xData_matrix.cc:71
int xData_is_1d_x(statusMessageReporting *smr, xDataType *xDT, int setMsg)
Definition: xData_1d_x.cc:70
int xData_init_2d_xindex_y(statusMessageReporting *smr, xData_element *element)
XML_Error
Definition: include/expat.h:54
size_t textOffset
Definition: xData.h:188
char const * xData_getFileName(xData_document *doc)
Definition: xData.cc:914
xData_document * xData_getElementsDocument(xData_element *element)
Definition: xData.cc:934
char * text
Definition: xData.h:218
xData_Int rows
Definition: xData.h:111
xData_attribute * xData_attributeByIndex(xData_attributionList *attributes, int index)
Definition: xData.cc:603
xData_document * doc
Definition: xData.h:194
const char *const xData_matrix_ID
Definition: xData.h:75
int xData_releaseAttributionList(statusMessageReporting *smr, xData_attributionList *attributes)
Definition: xData.cc:611
char * name
Definition: xData.h:122
xData_element * children
Definition: xData.h:172
xData_element * currentChild
Definition: xData.h:173
xData_errorCodes
Definition: xData.h:78
char * text
Definition: xData.h:136
xData_matrix * xData_matrix_copyData(statusMessageReporting *smr, xData_element *element)
Definition: xData_matrix.cc:85
int xData_is_2d_xShared_yHistogram(statusMessageReporting *smr, xDataType *xDT, int setMsg)
xDataType xDataTypeInfo
Definition: xData.h:187
int xData_init_2d_xy(statusMessageReporting *smr, xData_element *element)
Definition: xData_2d_xy.cc:54
XML_Parser xmlParser
Definition: xData.h:207
int xData_parse(xData_document *xData_doc, const char *s)
Definition: xData.cc:251
int xData_2d_xShared_yHistogram_free_copyData(statusMessageReporting *smr, void *data)
xData_itemMode
Definition: xData.h:80
xData_element * parentElement
Definition: xData.h:213
int xData_isElement_2d_xShared_yHistogram(statusMessageReporting *smr, xData_element *element, int setMsg)
xDT_releaseFunction release
Definition: xData.h:160
enum xData_itemMode xData_getNextItem(xData_item *item)
Definition: xData.cc:502
const G4int n
xData_xDataType
Definition: xData.h:81
int status
Definition: tracer.cxx:24
xData_element * element
Definition: xData.h:157
size_t textLength
Definition: xData.h:217
xData_rootElement * parentRoot
Definition: xData.h:169
enum xData_itemMode xData_getFirstItem(xData_element *element, xData_item *item)
Definition: xData.cc:482
statusMessageReporting * smr
Definition: xData.h:206
char * xData_getAttributesValue(xData_attributionList *attributes, const char *name)
Definition: xData.cc:530
int xData_attributeListLength(xData_attributionList *attributes)
Definition: xData.cc:596
Definition: inftrees.h:24
int xData_setMessageError_ReturnInt(int value, statusMessageReporting *smr, void *userData, const char *file, int line, int code, const char *fmt,...)
Definition: xDataMisc.cc:160
void * xData_malloc(statusMessageReporting *smr, size_t size, int zero, const char *forItem, const char *file, int line)
Definition: xDataMisc.cc:56
int xData_setFileName(statusMessageReporting *smr, xData_document *doc, char const *fileName)
Definition: xData.cc:921
int xData_is_2d_xy(statusMessageReporting *smr, xDataType *xDT, int setMsg)
Definition: xData_2d_xy.cc:70
xData_docInfo docInfo
Definition: xData.h:133
int xData_isElement_1d_x(statusMessageReporting *smr, xData_element *element, int setMsg)
Definition: xData_1d_x.cc:77
int xData_convertAttributeToDouble(statusMessageReporting *smr, xData_element *element, const char *name, double *d)
Definition: xData.cc:730
double * xData_2d_xindex_y_toXYs(statusMessageReporting *smr, xData_element *element, double *Xs)
xData_elementList * xData_getElementsByTagNameAndSort(statusMessageReporting *smr, xData_element *element, const char *tagName, const char *sortAttributeName, xData_sortElementFunc sortFunction)
Definition: xData.cc:788
int xData_getCommonData(statusMessageReporting *smr, xData_element *element, xData_Int *index, xData_Int *start, xData_Int *end, xData_Int *length)
Definition: xData.cc:652
int xData_addToAccessed(statusMessageReporting *smr, xData_element *element, int increment)
Definition: xData.cc:1078
int xData_2d_xy_free_copyData(statusMessageReporting *smr, void *data)
Definition: xData_2d_xy.cc:101
int xData_Int
Definition: xData.h:50
int xData_parseEndOfXML(statusMessageReporting *smr, xData_document *xData_doc)
Definition: xData.cc:187
xData_Int index
Definition: xData.h:102
void xData_freeElementList(statusMessageReporting *smr, xData_elementList *list)
Definition: xData.cc:832
xData_element * xData_getNextElement(xData_element *element)
Definition: xData.cc:478
xData_rootElement childrenRoot
Definition: xData.h:182
xData_attributionList attributes
Definition: xData.h:186
int xData_stringTo_xData_Int(statusMessageReporting *smr, void *smrUserInterface, char const *c, xData_Int *value, char const *endings, char **e)
Definition: xData.cc:1010
xData_xDataTypeOk xDataTypeOk_userFunction
Definition: xData.h:203
const XML_Char int const XML_Char * value
xData_text text
Definition: xData.h:189
int accessed
Definition: xData.h:180
xData_element * xData_getElements_xDataElement(statusMessageReporting *smr, xData_element *element)
Definition: xData.cc:622
int numberOfElements
Definition: xData.h:171
const char * typeString
Definition: xData.h:156
xData_elementListItem * items
Definition: xData.h:151
XML_Size err_line
Definition: xData.h:201
xData_attribute * attributes
Definition: xData.h:129
xData_elementList * xData_getElementsByTagName(statusMessageReporting *smr, xData_element *element, const char *tagName)
Definition: xData.cc:761
char * xDataMisc_getAbsPath(statusMessageReporting *smr, const char *fileName)
Definition: xDataMisc.cc:112
const char *const xData_twod_xy_ID
Definition: xData.h:72
int xData_isElement_matrix(statusMessageReporting *smr, xData_element *element, int setMsg)
Definition: xData_matrix.cc:78
xData_smr smrUserInterface
Definition: xData.h:205
double * xData_2d_xShared_yHistogram_toFilledXYs(xDataType *xDT, xData_Int nXs, double *Xs)
xData_element * next
Definition: xData.h:183
xData_Int xData_convertAttributeTo_xData_Int(statusMessageReporting *smr, xData_element *element, const char *name, xData_Int *n)
Definition: xData.cc:710
xData_docInfo docInfo
Definition: xData.h:177
int(* xDT_toDataFunction)(statusMessageReporting *smr, xDataType *, xData_attributionList *, const char *)
Definition: xData.h:140
unsigned long XML_Size
const char *const xData_oned_x_ID
Definition: xData.h:71
double * xData_1d_x_allocateCopyData(statusMessageReporting *smr, xData_element *element)
Definition: xData_1d_x.cc:105
void * xData_get_smrUserInterfaceFromDocument(xData_document *doc)
Definition: xData.cc:944
xData_rootElement * parentRoot
Definition: xData.h:181
xData_document * xData_parseMalloc(statusMessageReporting *smr, xData_xDataTypeOk func, void *userData)
Definition: xData.cc:141
int xData_getAccessed(statusMessageReporting *smr, xData_element *element)
Definition: xData.cc:1087
xDT_toDataFunction toData
Definition: xData.h:158
xData_element * xData_getDocumentsElement(xData_document *xData_doc)
Definition: xData.cc:476
int(* xData_sortElementFunc)(const void *, const void *)
Definition: xData.h:99
const XML_Char const XML_Char * data
xData_element * element
Definition: xData.h:145
char * fullName
Definition: xData.h:185
int xData_stringTo_double(statusMessageReporting *smr, void *smrUserInterface, char const *c, double *value, char const *endings, char **e)
Definition: xData.cc:1044
int xData_init_matrix(statusMessageReporting *smr, xData_element *element)
Definition: xData_matrix.cc:55
int(* xDT_releaseFunction)(statusMessageReporting *smr, xDataType *)
Definition: xData.h:142
signed char startPresent
Definition: xData.h:161
int(* smr_userInterface)(void *userData, char **smr)
void * data
Definition: xData.h:163
void * xData_realloc(statusMessageReporting *smr, void *pOld, size_t size, const char *forItem, const char *routine, int line)
Definition: xDataMisc.cc:75