Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
xDataTOM_importXML_XYs.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_XYsToTOM (statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE)
 
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 xDataXML_stringToDoubles (statusMessageReporting *smr, xDataXML_element *XE, char const *s1, int length, double *d1)
 

Function Documentation

◆ xDataXML_stringToDoubles()

int xDataXML_stringToDoubles ( statusMessageReporting * smr,
xDataXML_element * XE,
char const * s1,
int length,
double * d1 )

Definition at line 96 of file xDataTOM_importXML_XYs.cc.

96 {
97
98 char *e1 = (char *) s1;
99 int i1;
100
101 for( i1 = 0; i1 < length; i1++, d1++, s1 = e1 ) {
102 if( xDataXML_stringTo_double( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), s1, d1, " \n", &e1 ) ) return( 1 );
103 }
104 while( isspace( *e1 ) ) e1++; /* There should be nothing but white spaces left in the string. */ // Loop checking, 11.06.2015, T. Koi
105 if( *e1 != 0 ) {
106 smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "text contains extra data = %s", e1 );
107 return( 1 );
108 }
109 return( 0 );
110}
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt,...)
int xDataXML_stringTo_double(statusMessageReporting *smr, void *smrUserInterface, char const *c, double *value, char const *endings, char **e)
void * xDataXML_get_smrUserInterfaceFromElement(xDataXML_element *element)
int xDataTOM_smrLibraryID
Definition xDataTOM.cc:34

Referenced by xDataXML_polynomialToTOM(), and xDataXML_XYsDataToTOM().

◆ xDataXML_XYsDataToTOM()

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 )

Definition at line 76 of file xDataTOM_importXML_XYs.cc.

77 {
78
79 XYs->index = index;
80 XYs->length = length;
81 XYs->value = value;
82 XYs->accuracy = accuracy;
83 if( xDataTOM_subAxes_initialize( smr, &(XYs->subAxes), subAxesType, axesOffest, axes, interpolation ) != 0 ) return( 1 );
84 if( ( XYs->data = (double *) smr_malloc2( smr, 2 * length * sizeof( double ), 0, "XYs->data" ) ) == NULL ) goto err;
85
86 if( xDataXML_stringToDoubles( smr, XE, XE->text.text, 2 * length, (double *) XYs->data ) != 0 ) goto err;
87 return( 0 );
88
89err:
90 smr_freeMemory( (void **) &(XYs->data) );
91 return( 1 );
92}
void * smr_freeMemory(void **p)
#define smr_malloc2(smr, size, zero, forItem)
double value
Definition xDataTOM.h:82
xDataTOM_subAxes subAxes
Definition xDataTOM.h:83
double accuracy
Definition xDataTOM.h:82
double * data
Definition xDataTOM.h:84
int xDataTOM_subAxes_initialize(statusMessageReporting *smr, xDataTOM_subAxes *subAxes, enum xDataTOM_subAxesType type, int offset, xDataTOM_axes *axes, xDataTOM_interpolation *interpolation)
int xDataXML_stringToDoubles(statusMessageReporting *smr, xDataXML_element *XE, char const *s1, int length, double *d1)

◆ xDataXML_XYsToTOM()

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

Definition at line 22 of file xDataTOM_importXML_XYs.cc.

22 {
23
24 int dataProcessed = 0, length;
25 double accuracy;
26 xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
27 xDataXML_element *XMLChild;
28
29 xDI->element = TE;
30 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
31 if( xDataXML_convertAttributeToDouble( smr, XE, "accuracy", &accuracy, 1 ) != 0 ) return( 1 );
32 if( xDataXML_axesElememtToTOM( smr, XE, &(xDI->axes) ) != 0 ) return( 1 );
33 for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
34 if( strcmp( "axes", XMLChild->name ) == 0 ) {
35 continue; }
36 else if( strcmp( "data", XMLChild->name ) == 0 ) {
37 if( dataProcessed ) {
38 smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "multiple 'data' elements found" );
39 goto err;
40 }
41 dataProcessed = 1;
42 if( xDataXML_XYsDataToTOM2( smr, XMLChild, xDI, -1, length, 0., accuracy ) != 0 ) goto err;
43 }
44 }
45 if( dataProcessed == 0 ) {
47 goto err;
48 }
49 return( 0 );
50
51err:
52 return( 1 );
53}
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
xDataTOM_xDataInfo xDataInfo
Definition xDataTOM.h:187
xDataTOM_element * element
Definition xDataTOM.h:152
xDataTOM_axes axes
Definition xDataTOM.h:153
xDataXML_element * xDataXML_getNextElement(xDataXML_element *element)
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)
int xDataXML_axesElememtToTOM(statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes)
int xDataXML_convertAttributeToDouble(statusMessageReporting *smr, xDataXML_element *element, char const *name, double *d, int required)