Geant4 Cross Reference |
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 10 #include "xDataTOM_importXML_private.h" 11 12 #if defined __cplusplus 13 namespace GIDI { 14 using namespace GIDI; 15 #endif 16 17 static int xDataXML_LegendreSeriesDataToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries, 18 int index, int length, double value ); 19 /* 20 ************************************************************ 21 */ 22 int xDataXML_W_XYs_LegendreSeriesToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE ) { 23 24 int index, length; 25 xDataTOM_xDataInfo *xDI = &(TE->xDataInfo); 26 xDataXML_element *XMLChild; 27 char const *wLabel; 28 xDataTOM_W_XYs_LegendreSeries *W_XYs_LegendreSeries = NULL; 29 30 if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_W_XYs_LegendreSeries_ID, sizeof( xDataTOM_W_XYs_LegendreSeries ) ) ) == NULL ) 31 return( 1 ); 32 W_XYs_LegendreSeries = (xDataTOM_W_XYs_LegendreSeries *) xDI->data; 33 if( ( wLabel = xDataTOM_axes_getLabel( smr, &(xDI->axes), 0 ) ) == NULL ) goto err; 34 length = xDataXML_numberOfElementsByTagName( smr, XE, wLabel ); 35 if( xDataTOM_W_XYs_LegendreSeries_initialize( smr, W_XYs_LegendreSeries, 0, length, 0., xDataTOM_subAxesType_proxy, &(xDI->axes), NULL ) != 0 ) goto err; 36 37 for( XMLChild = xDataXML_getFirstElement( XE ), index = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) { 38 if( strcmp( "axes", XMLChild->name ) == 0 ) { 39 continue; } 40 else if( strcmp( wLabel, XMLChild->name ) == 0 ) { 41 if( xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM( smr, XMLChild, &(W_XYs_LegendreSeries->LegendreSeries[index]) ) != 0 ) goto err; 42 index++; } 43 else { 44 smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 45 "invalid element '%s' in xData = 'W_XYs_LegendreSeries'", XMLChild->name ); 46 goto err; 47 } 48 } 49 50 return( 0 ); 51 52 err: 53 return( 1 ); 54 } 55 /* 56 ************************************************************ 57 */ 58 int xDataXML_W_XYs_LegendreSeries_LegendreSeriesToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries ) { 59 60 int index, length; 61 double value; 62 63 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 ); 64 if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 ); 65 if( xDataXML_convertAttributeToDouble( smr, XE, "value", &value, 1 ) != 0 ) return( 1 ); 66 return( xDataXML_LegendreSeriesDataToTOM( smr, XE, LegendreSeries, index, length, value ) ); 67 } 68 /* 69 ************************************************************ 70 */ 71 static int xDataXML_LegendreSeriesDataToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_LegendreSeries *LegendreSeries, 72 int index, int length, double value ) { 73 74 if( xDataTOM_LegendreSeries_initialize( smr, LegendreSeries, index, length, value ) != 0 ) return( 1 ); 75 if( xDataXML_stringToDoubles( smr, XE, XE->text.text, length, LegendreSeries->LegendreSeries ) == 0 ) return( 0 ); 76 xDataTOM_LegendreSeries_release( LegendreSeries ); 77 return( 1 ); 78 } 79 80 #if defined __cplusplus 81 } 82 #endif 83