Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/xDataTOM_importXML_regionsXYs.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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_regionsXYs_regionToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, xDataTOM_axes *axes );
 18 static int xDataXML_regionsXYs_XYsToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, xDataTOM_axes *axes, 
 19         xDataTOM_interpolation *interpolation, int index, int length, double accuracy );
 20 /*
 21 ************************************************************
 22 */
 23 int xDataXML_regionsXYsToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE ) {
 24 
 25     int index;
 26     xDataTOM_xDataInfo *xDI = &(TE->xDataInfo);
 27     xDataXML_element *XMLChild;
 28     xDataTOM_regionsXYs *regionsXYs;
 29 
 30     if( ( xDI->data = xDataXML_initializeData( smr, XE, TE, xDataTOM_regionsXYs_ID, sizeof( xDataTOM_regionsXYs ) ) ) == NULL ) return( 1 );
 31     regionsXYs = (xDataTOM_regionsXYs *) xDI->data;
 32     regionsXYs->axes = &(xDI->axes);
 33     regionsXYs->length = xDataXML_numberOfElementsByTagName( smr, XE, "region" );
 34     if( ( regionsXYs->XYs = (xDataTOM_XYs *) smr_malloc2( smr, regionsXYs->length * sizeof( xDataTOM_XYs ), 1, "regionsXYs->XYs" ) ) == NULL ) goto err;
 35 
 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( "region", XMLChild->name ) == 0 ) {
 41             if( xDataXML_regionsXYs_regionToTOM( smr, XMLChild, &(regionsXYs->XYs[index]), regionsXYs->axes ) != 0 ) goto err;
 42             index++; }
 43         else {
 44             smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1,
 45                 "invalid element '%s' in xData 'regionsXYs'", XMLChild->name );
 46             goto err;
 47         }
 48     }
 49 
 50     return( 0 );
 51 
 52 err:
 53 /* Need to free things here?????????.*/
 54     return( 1 );
 55 }
 56 /*
 57 ************************************************************
 58 */
 59 static int xDataXML_regionsXYs_regionToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, xDataTOM_axes *axes ) {
 60 
 61     int index, length;
 62     double accuracy;
 63     xDataXML_element *XMLChild, *interpolationAxesElement = NULL, *dataElement = NULL;
 64     xDataTOM_interpolation interpolation;
 65     char const *sInterpolation;
 66 
 67     if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "index", &index, 1 ) != 0 ) return( 1 );
 68     if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XE, "length", &length, 1 ) != 0 ) return( 1 );
 69     if( xDataXML_convertAttributeToDouble( smr, XE, "accuracy", &accuracy, 1 ) != 0 ) return( 1 );
 70 
 71     for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
 72         if( strcmp( "interpolationAxes", XMLChild->name ) == 0 ) {
 73             if( interpolationAxesElement != NULL ) {
 74                 smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 
 75                     "multiple %s elements in element 'region'", XMLChild->name );
 76                 goto err;
 77             }
 78             interpolationAxesElement = XMLChild; }
 79         else if( strcmp( "data", XMLChild->name ) == 0 ) {
 80             if( dataElement != NULL ) {
 81                 smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 
 82                     "multiple %s elements in element 'region'", XMLChild->name );
 83                 goto err;
 84             }
 85             dataElement = XMLChild; }
 86         else {
 87             smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1,
 88                 "invalid element '%s' in element 'region'", XMLChild->name );
 89             goto err;
 90         }
 91     }
 92     if( interpolationAxesElement == NULL ) {
 93         smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 
 94                 "missing 'interpolationAxes' element in element 'region'" );
 95         goto err;
 96     }
 97     if( ( sInterpolation = xDataXML_getAttributesValueInElement( interpolationAxesElement, "interpolation" ) ) == NULL ) {
 98         smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( interpolationAxesElement ), xDataTOM_smrLibraryID, -1,
 99                 "missing attribute 'interpolation'" );
100         goto err; 
101     }
102     if( xDataTOM_interpolation_setFromString( smr, &interpolation, sInterpolation ) != 0 ) goto err;
103     if( dataElement == NULL ) {
104         smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 
105                 "missing 'data' element in element 'region'" );
106         goto err;
107     }
108     xDataXML_regionsXYs_XYsToTOM( smr, dataElement, XYs, axes, &interpolation, index, length, accuracy );
109     return( 0 );
110 
111 err:
112 /* Need to free things here?????????.*/
113 
114     return( 1 );
115 }
116 /*
117 ************************************************************
118 */
119 static int xDataXML_regionsXYs_XYsToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_XYs *XYs, xDataTOM_axes *axes, 
120         xDataTOM_interpolation *interpolation, int index, int length, double accuracy ) {
121 
122     return( xDataXML_XYsDataToTOM( smr, XE, XYs, index, length, 0., accuracy, xDataTOM_subAxesType_intepolationAxes, 0, axes, interpolation ) );
123 }
124 
125 #if defined __cplusplus
126 }
127 #endif
128