Geant4-11
Functions
xDataTOM_importXML_KalbachMann.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

static int xDataXML_KalbachMannCoefficientsToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_KalbachMannCoefficients *coefficients)
 
int xDataXML_KalbachMannToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
 

Function Documentation

◆ xDataXML_KalbachMannCoefficientsToTOM()

static int xDataXML_KalbachMannCoefficientsToTOM ( statusMessageReporting smr,
xDataXML_element XE,
xDataTOM_KalbachMannCoefficients coefficients 
)
static

Definition at line 70 of file xDataTOM_importXML_KalbachMann.cc.

70 {
71
72 int index, length;
73 double value;
74
75 coefficients->coefficients = NULL;
76 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 );
77 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
78 if( xDataXML_convertAttributeToDouble( smr, XE, "value", &value, 1 ) != 0 ) return( 1 );
79 coefficients->index = index;
80 coefficients->length = length;
81 coefficients->value = value;
82 if( ( coefficients->coefficients = (double *) smr_malloc2( smr, length * sizeof( double ), 0, "coefficients->coefficients" ) ) == NULL ) goto err;
83 if( xDataXML_stringToDoubles( smr, XE, XE->text.text, length, (double *) coefficients->coefficients ) != 0 ) goto err;
84 return( 0 );
85
86err:
87 if( coefficients->coefficients != NULL ) smr_freeMemory( (void **) &(coefficients->coefficients) );
88 return( 1 );
89}
void * smr_freeMemory(void **p)
#define smr_malloc2(smr, size, zero, forItem)
int xDataXML_stringToDoubles(statusMessageReporting *smr, xDataXML_element *XE, char const *s, int length, double *d)
xDataTOM_Int xDataXML_convertAttributeTo_xDataTOM_Int(statusMessageReporting *smr, xDataXML_element *element, char const *name, xDataTOM_Int *n, int required)
int xDataXML_convertAttributeToDouble(statusMessageReporting *smr, xDataXML_element *element, char const *name, double *d, int required)

References xDataTOM_KalbachMannCoefficients_s::coefficients, xDataTOM_KalbachMannCoefficients_s::index, xDataTOM_KalbachMannCoefficients_s::length, smr_freeMemory(), smr_malloc2, xDataXML_text_s::text, xDataXML_element_s::text, xDataTOM_KalbachMannCoefficients_s::value, xDataXML_convertAttributeTo_xDataTOM_Int(), xDataXML_convertAttributeToDouble(), and xDataXML_stringToDoubles().

Referenced by xDataXML_KalbachMannToTOM().

◆ xDataXML_KalbachMannToTOM()

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

Definition at line 21 of file xDataTOM_importXML_KalbachMann.cc.

21 {
22
23 int length;
24 xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
25 xDataTOM_KalbachMann *KalbachMann;
26 char const *wLabel, *form;
27 xDataXML_element *XMLChild;
28 xDataTOM_axes *axes = &(xDI->axes);
29
30/* Need to release KalbachMann if an error occurs later. */
31 if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_KalbachMann_ID, sizeof( xDataTOM_KalbachMann ) ) ) == NULL ) return( 1 );
32 KalbachMann = (xDataTOM_KalbachMann *) xDI->data;
33
34 if( ( form = xDataXML_getAttributesValueInElement( XE, "form" ) ) == NULL ) goto err;
35 if( strcmp( form, "fr" ) == 0 ) {
36 KalbachMann->type = xDataTOM_KalbachMannType_fr; }
37 else if( strcmp( form, "fra" ) == 0 ) {
38 KalbachMann->type = xDataTOM_KalbachMannType_fra; }
39 else {
41 "invalid KalbachMann type - '%s'", form );
42 goto err;
43 }
44 if( ( wLabel = xDataTOM_axes_getLabel( smr, axes, 0 ) ) == NULL ) goto err;
45 length = xDataXML_numberOfElementsByTagName( smr, XE, wLabel );
46 if( xDataTOM_KalbachMann_initialize( smr, KalbachMann, length, axes ) != 0 ) return( 1 );
47
48 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
49 if( strcmp( "axes", XMLChild->name ) == 0 ) {
50 continue; }
51 else if( strcmp( wLabel, XMLChild->name ) == 0 ) {
52 if( xDataXML_KalbachMannCoefficientsToTOM( smr, XMLChild, &(KalbachMann->coefficients[KalbachMann->numberOfEnergies]) ) != 0 ) goto err;
53 KalbachMann->numberOfEnergies++; }
54 else {
56 "invalid element '%s' in xData = 'KalbachMann'", XMLChild->name );
57 goto err;
58 }
59 }
60
61 return( 0 );
62
63err:
64 smr_freeMemory( (void **) &(xDI->data) );
65 return( 1 );
66}
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
enum xDataTOM_KalbachMannType type
Definition: xDataTOM.h:138
xDataTOM_KalbachMannCoefficients * coefficients
Definition: xDataTOM.h:141
xDataTOM_xDataInfo xDataInfo
Definition: xDataTOM.h:187
xDataTOM_axes axes
Definition: xDataTOM.h:153
char const * xDataTOM_axes_getLabel(statusMessageReporting *smr, xDataTOM_axes *axes, int index)
int xDataTOM_KalbachMann_initialize(statusMessageReporting *smr, xDataTOM_KalbachMann *KalbachMann, int length, xDataTOM_axes *axes)
@ xDataTOM_KalbachMannType_fra
Definition: xDataTOM.h:25
@ xDataTOM_KalbachMannType_fr
Definition: xDataTOM.h:25
static int xDataXML_KalbachMannCoefficientsToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_KalbachMannCoefficients *coefficients)
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)
char const * xDataXML_getAttributesValueInElement(xDataXML_element *element, char const *name)
xDataXML_element * xDataXML_getFirstElement(xDataXML_element *element)
int xDataXML_numberOfElementsByTagName(statusMessageReporting *smr, xDataXML_element *element, char const *tagName)
char const * xDataTOM_KalbachMann_ID
int xDataTOM_smrLibraryID
Definition: xDataTOM.cc:34

References xDataTOM_xDataInfo_s::axes, xDataTOM_KalbachMann_s::coefficients, xDataTOM_xDataInfo_s::data, xDataXML_element_s::name, xDataTOM_KalbachMann_s::numberOfEnergies, smr_freeMemory(), smr_setReportError3, xDataTOM_KalbachMann_s::type, xDataTOM_element_s::xDataInfo, xDataTOM_axes_getLabel(), xDataTOM_KalbachMann_ID, xDataTOM_KalbachMann_initialize(), xDataTOM_KalbachMannType_fr, xDataTOM_KalbachMannType_fra, xDataTOM_smrLibraryID, xDataXML_get_smrUserInterfaceFromElement(), xDataXML_getAttributesValueInElement(), xDataXML_getFirstElement(), xDataXML_getNextElement(), xDataXML_initializeData(), xDataXML_KalbachMannCoefficientsToTOM(), and xDataXML_numberOfElementsByTagName().

Referenced by xDataXML_constructTOM().