Geant4  10.02.p01
xDataTOM_importXML_W_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 
10 #include "xDataTOM_importXML_private.h"
11 
12 #if defined __cplusplus
13 namespace GIDI {
14 using namespace GIDI;
15 #endif
16 
17 static int xDataXML_LegendreSeriesDataToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries,
18  int index, int length, double value );
19 /*
20 ************************************************************
21 */
22 int xDataXML_W_XYs_LegendreSeriesToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE ) {
23 
24  int index, length;
25  xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
26  xDataXML_element *XMLChild;
27  char const *wLabel;
28  xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries = NULL;
29 
30  if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_W_XYs_LegendreSeries_ID, sizeof( xDataTOM_W_XYs_LegendreSeries ) ) ) == NULL )
31  return( 1 );
32  W_XYs_LegendreSeries = (xDataTOM_W_XYs_LegendreSeries *) xDI->data;
33  if( ( wLabel = xDataTOM_axes_getLabel( smr, &(xDI->axes), 0 ) ) == NULL ) goto err;
34  length = xDataXML_numberOfElementsByTagName( smr, XE, wLabel );
35  if( xDataTOM_W_XYs_LegendreSeries_initialize( smr, W_XYs_LegendreSeries, 0, length, 0., xDataTOM_subAxesType_proxy, &(xDI->axes), NULL ) != 0 ) 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( wLabel, XMLChild->name ) == 0 ) {
41  if( xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM( smr, XMLChild, &(W_XYs_LegendreSeries->LegendreSeries[index]) ) != 0 ) goto err;
42  index++; }
43  else {
44  smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1,
45  "invalid element '%s' in xData = 'W_XYs_LegendreSeries'", XMLChild->name );
46  goto err;
47  }
48  }
49 
50  return( 0 );
51 
52 err:
53  return( 1 );
54 }
55 /*
56 ************************************************************
57 */
58 int xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries ) {
59 
60  int index, length;
61  double value;
62 
63  if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 );
64  if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
65  if( xDataXML_convertAttributeToDouble( smr, XE, "value", &value, 1 ) != 0 ) return( 1 );
66  return( xDataXML_LegendreSeriesDataToTOM( smr, XE, LegendreSeries, index, length, value ) );
67 }
68 /*
69 ************************************************************
70 */
71 static int xDataXML_LegendreSeriesDataToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries,
72  int index, int length, double value ) {
73 
74  if( xDataTOM_LegendreSeries_initialize( smr, LegendreSeries, index, length, value ) != 0 ) return( 1 );
75  if( xDataXML_stringToDoubles( smr, XE, XE->text.text, length, LegendreSeries->LegendreSeries ) == 0 ) return( 0 );
76  xDataTOM_LegendreSeries_release( LegendreSeries );
77  return( 1 );
78 }
79 
80 #if defined __cplusplus
81 }
82 #endif
int xDataXML_numberOfElementsByTagName(statusMessageReporting *, xDataXML_element *element, char const *tagName)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
char const * xDataTOM_axes_getLabel(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
int xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries)
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34
int xDataTOM_LegendreSeries_release(xDataTOM_LegendreSeries *LegendreSeries)
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
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)
int xDataXML_W_XYs_LegendreSeriesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
char const * xDataTOM_W_XYs_LegendreSeries_ID
static int xDataXML_LegendreSeriesDataToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries, int index, int length, double value)
int xDataXML_stringToDoubles(statusMessageReporting *smr, xDataXML_element *XE, char const *s1, int length, double *d1)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
int xDataTOM_LegendreSeries_initialize(statusMessageReporting *smr, xDataTOM_LegendreSeries *LegendreSeries, int index, int length, double value)
void * xDataXML_initializeData(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE, char const *ID, size_t size)
int xDataXML_convertAttributeToDouble(statusMessageReporting *smr, xDataXML_element *element, char const *name, double *d, int required)