ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
xDataTOM_importXML_polynomial.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file xDataTOM_importXML_polynomial.cc
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
13 namespace GIDI {
14 using 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 
50 err:
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