Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
xDataTOM_importXML_axes.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 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 }
42 /*
43 ************************************************************
44 */
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 
82 errA:
83  smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "axis missing attribute '%s'", attribute );
84 err:
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 }
90 
91 #if defined __cplusplus
92 }
93 #endif
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
int xDataXML_axesElememtToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
int xDataTOM_interpolation_set(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, enum xDataTOM_interpolationFlag independent, enum xDataTOM_interpolationFlag dependent, enum xDataTOM_interpolationQualifier qualifier)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
xDataTOM_axis * xDataTOM_axis_release(statusMessageReporting *smr, xDataTOM_axis *axis)
int xDataXML_axesToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
int xDataTOM_axes_initialize(statusMessageReporting *smr, xDataTOM_axes *axes, int numberOfAxes)
int xDataTOM_interpolation_setFromString(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, char const *str)
void * smr_freeMemory(void **p)
Char_t n[5]
xDataTOM_axis * axis
Definition: xDataTOM.h:70
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
char const * xDataXML_getAttributesValueInElement(xDataXML_element *element, char const *name)
int xDataTOM_axis_initialize(statusMessageReporting *smr, xDataTOM_axis *axis, int index, char const *label, char const *unit, xDataTOM_interpolation *interpolation)
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34