Geant4-11
Functions
xDataTOM_importXML_axes.cc File Reference
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include "xDataTOM_importXML_private.h"

Go to the source code of this file.

Functions

int xDataXML_axesElememtToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
 
int xDataXML_axesToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
 

Function Documentation

◆ xDataXML_axesElememtToTOM()

int xDataXML_axesElememtToTOM ( statusMessageReporting smr,
xDataXML_element XE,
xDataTOM_axes axes 
)

Definition at line 20 of file xDataTOM_importXML_axes.cc.

20 {
21
22 int axesProcessed = 0;
23 xDataXML_element *XMLChild;
24
25 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
26 if( strcmp( "axes", XMLChild->name ) == 0 ) {
27 if( axesProcessed ) {
28 smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "multiple 'axes' elements found" );
29 return( 1 );
30 }
31 axesProcessed = 1;
32 if( xDataXML_axesToTOM( smr, XMLChild, axes ) != 0 ) return( 1 );
33 }
34 }
35 if( axesProcessed == 0 ) {
37 return( 1 );
38 }
39
40 return( 0 );
41}
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
int xDataXML_axesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34

References xDataXML_element_s::name, smr_setReportError3p, xDataTOM_smrLibraryID, xDataXML_axesToTOM(), xDataXML_get_smrUserInterfaceFromElement(), xDataXML_getFirstElement(), and xDataXML_getNextElement().

Referenced by xDataXML_initializeData(), and xDataXML_XYsToTOM().

◆ xDataXML_axesToTOM()

int xDataXML_axesToTOM ( statusMessageReporting smr,
xDataXML_element XE,
xDataTOM_axes axes 
)

Definition at line 45 of file xDataTOM_importXML_axes.cc.

45 {
46
47 int i = 0, n = 0, index;
48 xDataXML_element *XMLChild;
49 char const *label, *unit, *sInterpolation, *attribute;
50 xDataTOM_interpolation interpolation;
51
52 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
53 if( strcmp( "axis", XMLChild->name ) != 0 ) {
55 "non axis element found: name = %s", XMLChild->name );
56 return( 1 );
57 }
58 n++;
59 }
60 if( xDataTOM_axes_initialize( smr, axes, n ) != 0 ) return( 1 );
61
62 for( XMLChild = xDataXML_getFirstElement( XE ), i = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ), i++ ) {
63 attribute = "index";
64 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XMLChild, attribute, &index, 1 ) != 0 ) goto errA;
65 attribute = "label";
66 if( ( label = xDataXML_getAttributesValueInElement( XMLChild, attribute ) ) == NULL ) goto errA;
67 attribute = "unit";
68 if( ( unit = xDataXML_getAttributesValueInElement( XMLChild, attribute ) ) == NULL ) goto errA;
69 if( i < ( n - 1 ) ) {
70 attribute = "interpolation";
71 if( ( sInterpolation = xDataXML_getAttributesValueInElement( XMLChild, attribute ) ) == NULL ) goto errA;
72 if( xDataTOM_interpolation_setFromString( smr, &interpolation, sInterpolation ) != 0 ) goto err; }
73 else {
74 sInterpolation = "";
77 }
78 xDataTOM_axis_initialize( smr, &(axes->axis[i]), index, label, unit, &interpolation );
79 }
80 return( 0 );
81
82errA:
83 smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "axis missing attribute '%s'", attribute );
84err:
85 n = i;
86 for( i = 0; i < n; i++ ) xDataTOM_axis_release( smr, &(axes->axis[i]) );
87 smr_freeMemory( (void **) &(axes->axis) );
88 return( 1 );
89}
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
void * smr_freeMemory(void **p)
xDataTOM_axis * axis
Definition: xDataTOM.h:70
int xDataTOM_interpolation_setFromString(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, char const *str)
xDataTOM_axis * xDataTOM_axis_release(statusMessageReporting *smr, xDataTOM_axis *axis)
int xDataTOM_axis_initialize(statusMessageReporting *smr, xDataTOM_axis *axis, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation)
@ xDataTOM_interpolationFlag_linear
Definition: xDataTOM.h:19
int xDataTOM_axes_initialize(statusMessageReporting *smr, xDataTOM_axes *axes, int numberOfAxes)
int xDataTOM_interpolation_set(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, enum xDataTOM_interpolationFlag independent, enum xDataTOM_interpolationFlag dependent, enum xDataTOM_interpolationQualifier qualifier)
@ xDataTOM_interpolationQualifier_dependent
Definition: xDataTOM.h:21
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
char const * xDataXML_getAttributesValueInElement(xDataXML_element *element, char const *name)

References xDataTOM_axes_s::axis, CLHEP::detail::n, xDataXML_element_s::name, smr_freeMemory(), smr_setReportError3, xDataTOM_axes_initialize(), xDataTOM_axis_initialize(), xDataTOM_axis_release(), xDataTOM_interpolation_set(), xDataTOM_interpolation_setFromString(), xDataTOM_interpolationFlag_linear, xDataTOM_interpolationQualifier_dependent, xDataTOM_smrLibraryID, xDataXML_convertAttributeTo_xDataTOM_Int(), xDataXML_get_smrUserInterfaceFromElement(), xDataXML_getAttributesValueInElement(), xDataXML_getFirstElement(), and xDataXML_getNextElement().

Referenced by xDataXML_axesElememtToTOM().