Geant4-11
xDataTOM_importXML_polynomial.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
17/*
18************************************************************
19*/
21
22 int length, dataProcessed = 0;
23 xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
24 xDataTOM_polynomial *polynomial = NULL;
25 xDataXML_element *XMLChild;
26
27 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
28 if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_polynomial_ID, sizeof( xDataTOM_polynomial ) ) ) == NULL ) return( 1 );
29 if( xDataTOM_polynomial_initialize( smr, (xDataTOM_polynomial *) xDI->data, length, &(xDI->axes) ) != 0 ) goto err;
30 polynomial = (xDataTOM_polynomial *) xDI->data;
31
32 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
33 if( strcmp( "axes", XMLChild->name ) == 0 ) {
34 continue; }
35 else if( strcmp( "data", XMLChild->name ) == 0 ) {
36 if( dataProcessed ) {
37 smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "multiple 'data' elements found" );
38 goto err;
39 }
40 dataProcessed = 1;
41 if( xDataXML_stringToDoubles( smr, XE, XMLChild->text.text, length, (double *) polynomial->coefficients ) != 0 ) goto err;
42 }
43 }
44 if( dataProcessed == 0 ) {
46 goto err;
47 }
48 return( 0 );
49
50err:
51 if( polynomial != NULL ) xDataTOM_polynomial_release( polynomial );
52 smr_freeMemory( (void **) &(xDI->data) );
53 return( 1 );
54}
55
56#if defined __cplusplus
57}
58#endif
void * smr_freeMemory(void **p)
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
xDataTOM_xDataInfo xDataInfo
Definition: xDataTOM.h:187
double * coefficients
Definition: xDataTOM.h:147
xDataTOM_axes axes
Definition: xDataTOM.h:153
int xDataTOM_polynomial_initialize(statusMessageReporting *smr, xDataTOM_polynomial *polynomial, int length, xDataTOM_axes *axes)
int xDataTOM_polynomial_release(xDataTOM_polynomial *polynomial)
int xDataXML_polynomialToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
void * xDataXML_initializeData(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE, char const *ID, size_t size)
int xDataXML_stringToDoubles(statusMessageReporting *smr, xDataXML_element *XE, char const *s, int length, double *d)
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)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
char const * xDataTOM_polynomial_ID
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34