Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
xDataTOM_importXML_polynomial.cc File Reference
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include "xDataTOM_importXML_private.h"
Include dependency graph for xDataTOM_importXML_polynomial.cc:

Go to the source code of this file.

Functions

int xDataXML_polynomialToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
 

Function Documentation

int xDataXML_polynomialToTOM ( statusMessageReporting smr,
xDataXML_element XE,
xDataTOM_element TE 
)

Definition at line 20 of file xDataTOM_importXML_polynomial.cc.

20  {
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 }
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34
int xDataTOM_polynomial_release(xDataTOM_polynomial *polynomial)
double * coefficients
Definition: xDataTOM.h:147
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
void * xDataXML_initializeData(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE, char const *ID, size_t size)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
void * smr_freeMemory(void **p)
xDataTOM_axes axes
Definition: xDataTOM.h:153
int xDataXML_stringToDoubles(statusMessageReporting *smr, xDataXML_element *XE, char const *s, int length, double *d)
xDataTOM_xDataInfo xDataInfo
Definition: xDataTOM.h:187
int xDataTOM_polynomial_initialize(statusMessageReporting *smr, xDataTOM_polynomial *polynomial, int length, xDataTOM_axes *axes)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
char const * xDataTOM_polynomial_ID

Here is the call graph for this function:

Here is the caller graph for this function: