Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
xDataTOM_importXML_regionsW_XYs_LegendreSeries.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5#include <stdlib.h>
6#include <string.h>
7#include <limits.h>
8#include <ctype.h>
9
11
12#if defined __cplusplus
13namespace GIDI {
14using namespace GIDI;
15#endif
16
17static int xDataXML_regionsW_XYs_LegendreSeries_regionToTOM( statusMessageReporting *smr, xDataXML_element *XE,
18 xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries, char const *wLabel, xDataTOM_axes *axes );
19/*
20************************************************************
21*/
23
24 int index, length;
25 xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
26 xDataXML_element *XMLChild;
27 char const *wLabel;
28 xDataTOM_regionsW_XYs_LegendreSeries *regionsW_XYs_LegendreSeries;
29
31 == NULL ) return( 1 );
32 regionsW_XYs_LegendreSeries = (xDataTOM_regionsW_XYs_LegendreSeries *) xDI->data;
33 length = xDataXML_numberOfElementsByTagName( smr, XE, "region" );
34 if( xDataTOM_regionsW_XYs_LegendreSeries_initialize( smr, regionsW_XYs_LegendreSeries, length, &(xDI->axes) ) != 0 ) goto err;
35 if( ( wLabel = xDataTOM_axes_getLabel( smr, &(xDI->axes), 0 ) ) == NULL ) goto err;
36
37 for( XMLChild = xDataXML_getFirstElement( XE ), index = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
38 if( strcmp( "axes", XMLChild->name ) == 0 ) {
39 continue; }
40 else if( strcmp( "region", XMLChild->name ) == 0 ) {
41 if( xDataXML_regionsW_XYs_LegendreSeries_regionToTOM( smr, XMLChild, &(regionsW_XYs_LegendreSeries->W_XYs_LegendreSeries[index]),
42 wLabel, regionsW_XYs_LegendreSeries->axes ) != 0 ) goto err;
43 index++; }
44 else {
46 "invalid element '%s' in xData 'regionsW_XYs_LegendreSeries'", XMLChild->name );
47 goto err;
48 }
49 }
50
51 return( 0 );
52
53err:
54/* Need to free things here?????????.*/
55 return( 1 );
56}
57/*
58************************************************************
59*/
60static int xDataXML_regionsW_XYs_LegendreSeries_regionToTOM( statusMessageReporting *smr, xDataXML_element *XE,
61 xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries, char const *wLabel, xDataTOM_axes *axes ) {
62
63 int index, length;
64 xDataXML_element *XMLChild, *interpolationAxesElement = NULL;
65 xDataTOM_interpolation interpolation;
66 char const *sInterpolation;
67
68 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
69 if( strcmp( "interpolationAxes", XMLChild->name ) == 0 ) {
70 if( interpolationAxesElement != NULL ) {
72 "multiple %s elements in element 'region'", XMLChild->name );
73 goto err;
74 }
75 interpolationAxesElement = XMLChild;
76 }
77 }
78 if( interpolationAxesElement == NULL ) {
80 "missing element 'interpolationAxes'" );
81 goto err;
82 }
83 if( ( sInterpolation = xDataXML_getAttributesValueInElement( interpolationAxesElement, "interpolation" ) ) == NULL ) {
85 "missing attribute 'interpolation'" );
86 goto err;
87 }
88 if( xDataTOM_interpolation_setFromString( smr, &interpolation, sInterpolation ) != 0 ) goto err;
89
90 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 );
91 length = xDataXML_numberOfElementsByTagName( smr, XE, wLabel );
92 if( xDataTOM_W_XYs_LegendreSeries_initialize( smr, W_XYs_LegendreSeries, index, length, 0., xDataTOM_subAxesType_intepolationAxes, axes,
93 &interpolation ) != 0 ) goto err;
94 for( XMLChild = xDataXML_getFirstElement( XE ), index = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
95 if( strcmp( "interpolationAxes", XMLChild->name ) == 0 ) {
96 continue; }
97 else if( strcmp( wLabel, XMLChild->name ) == 0 ) {
98 if( xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM( smr, XMLChild, &(W_XYs_LegendreSeries->LegendreSeries[index]) ) != 0 ) goto err;
99 index++; }
100 else {
102 "invalid element '%s' in element 'region'", XMLChild->name );
103 goto err;
104 }
105 }
106 return( 0 );
107
108err:
109/* Need to free things here?????????.*/
110
111 return( 1 );
112}
113
114#if defined __cplusplus
115}
116#endif
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
xDataTOM_LegendreSeries * LegendreSeries
Definition: xDataTOM.h:116
xDataTOM_xDataInfo xDataInfo
Definition: xDataTOM.h:187
xDataTOM_W_XYs_LegendreSeries * W_XYs_LegendreSeries
Definition: xDataTOM.h:122
xDataTOM_axes axes
Definition: xDataTOM.h:153
int xDataTOM_interpolation_setFromString(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, char const *str)
@ xDataTOM_subAxesType_intepolationAxes
Definition: xDataTOM.h:24
int xDataTOM_W_XYs_LegendreSeries_initialize(statusMessageReporting *smr, xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries, int index, int length, double value, enum xDataTOM_subAxesType subAxesType, xDataTOM_axes *axes, xDataTOM_interpolation *interpolation)
char const * xDataTOM_axes_getLabel(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
int xDataTOM_regionsW_XYs_LegendreSeries_initialize(statusMessageReporting *smr, xDataTOM_regionsW_XYs_LegendreSeries *regionsW_XYs_LegendreSeries, int length, xDataTOM_axes *axes)
void * xDataXML_initializeData(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE, char const *ID, size_t size)
int xDataXML_regionsW_XYs_LegendreSeriesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
int xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries)
char const * xDataXML_getAttributesValueInElement(xDataXML_element *element, char const *name)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
int xDataXML_numberOfElementsByTagName(statusMessageReporting *smr, xDataXML_element *element, char const *tagName)
char const * xDataTOM_regionsW_XYs_LegendreSeries_ID
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34