Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
xDataTOM_importXML_W_XYs.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 
18  int axesOffset );
19 /*
20 ************************************************************
21 */
23 
24  xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
25  xDataTOM_W_XYs *W_XYs;
26 
27 /* Need to release W_XYs if an error occurs later. */
28  if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_W_XYs_ID, sizeof( xDataTOM_W_XYs ) ) ) == NULL ) return( 1 );
29  W_XYs = (xDataTOM_W_XYs *) xDI->data;
30 
31  if( xDataXML_W_XYsDataToTOM( smr, XE, W_XYs, 0, 0., &(xDI->axes), 0 ) != 0 ) goto err;
32  return( 0 );
33 
34 err:
35  smr_freeMemory( (void **) &(xDI->data) );
36  return( 1 );
37 }
38 /*
39 ************************************************************
40 */
42  int axesOffset ) {
43 
44  int length;
45  char const *wLabel;
46  xDataXML_element *XMLChild;
47 
48  if( ( wLabel = xDataTOM_axes_getLabel( smr, axes, axesOffset ) ) == NULL ) goto err;
49  length = xDataXML_numberOfElementsByTagName( smr, XE, wLabel );
50  if( xDataTOM_W_XYs_initialize( smr, W_XYs, index, length, value, axes, axesOffset ) != 0 ) return( 1 );
51 
52  for( XMLChild = xDataXML_getFirstElement( XE ), index = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
53  if( strcmp( "axes", XMLChild->name ) == 0 ) {
54  continue; }
55  else if( strcmp( wLabel, XMLChild->name ) == 0 ) {
56  if( xDataXML_W_XYs_XYsToTOM( smr, XMLChild, &(W_XYs->XYs[index]), axes, axesOffset + 1 ) != 0 ) goto err;
57  index++; }
58  else {
60  "invalid element '%s' in xData = 'W_XYs'", XMLChild->name );
61  goto err;
62  }
63  }
64 
65  return( 0 );
66 
67 err:
68  return( 1 );
69 }
70 /*
71 ************************************************************
72 */
74  int axesOffset ) {
75 
76  int index, length;
77  double accuracy, value;
78 
79  if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 );
80  if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
81  if( xDataXML_convertAttributeToDouble( smr, XE, "accuracy", &accuracy, 1 ) != 0 ) return( 1 );
82  if( xDataXML_convertAttributeToDouble( smr, XE, "value", &value, 1 ) != 0 ) return( 1 );
83  return( xDataXML_XYsDataToTOM( smr, XE, XYs, index, length, value, accuracy, xDataTOM_subAxesType_proxy, axesOffset, axes, NULL ) );
84 }
85 
86 #if defined __cplusplus
87 }
88 #endif
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)
void * xDataXML_initializeData(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE, char const *ID, size_t size)
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
int xDataTOM_W_XYs_initialize(statusMessageReporting *smr, xDataTOM_W_XYs *W_XYs, int index, int length, double value, xDataTOM_axes *axes, int axesOffset)
xDataTOM_XYs * XYs
Definition: xDataTOM.h:97
int xDataXML_W_XYsDataToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_W_XYs *W_XYs, int index, double value, xDataTOM_axes *axes, int axesOffset)
int xDataXML_numberOfElementsByTagName(statusMessageReporting *smr, xDataXML_element *element, char const *tagName)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
xDataTOM_xDataInfo xDataInfo
Definition: xDataTOM.h:187
int xDataXML_W_XYsToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
const XML_Char int const XML_Char * value
Definition: expat.h:331
static int xDataXML_W_XYs_XYsToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, xDataTOM_axes *axes, int axesOffset)
void * smr_freeMemory(void **p)
int xDataXML_convertAttributeToDouble(statusMessageReporting *smr, xDataXML_element *element, char const *name, double *d, int required)
char const * xDataTOM_W_XYs_ID
char const * xDataTOM_axes_getLabel(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
int xDataXML_XYsDataToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, int index, int length, double value, double accuracy, enum xDataTOM_subAxesType subAxesType, int axesOffest, xDataTOM_axes *axes, xDataTOM_interpolation *interpolation)
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34
xDataTOM_axes axes
Definition: xDataTOM.h:153