Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/xDataTOM_importXML_axes.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 /*
 18 ************************************************************
 19 */
 20 int xDataXML_axesElememtToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes ) {
 21 
 22     int axesProcessed = 0;
 23     xDataXML_element *XMLChild;
 24 
 25     for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
 26         if( strcmp( "axes", XMLChild->name ) == 0 ) {
 27             if( axesProcessed ) {
 28                 smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "multiple 'axes' elements found" );
 29                 return( 1 );
 30             }
 31             axesProcessed = 1;
 32             if( xDataXML_axesToTOM( smr, XMLChild, axes ) != 0 ) return( 1 );
 33         }
 34     }
 35     if( axesProcessed == 0 ) {
 36         smr_setReportError3p( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "axes element missing" );
 37         return( 1 );
 38     }
 39 
 40     return( 0 );
 41 }
 42 /*
 43 ************************************************************
 44 */
 45 int xDataXML_axesToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_axes *axes ) {
 46 
 47     int i = 0, n = 0, index;
 48     xDataXML_element *XMLChild;
 49     char const *label, *unit, *sInterpolation, *attribute;
 50     xDataTOM_interpolation interpolation;
 51 
 52     for( XMLChild = xDataXML_getFirstElement( XE ); XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ) ) {
 53         if( strcmp( "axis", XMLChild->name ) != 0 ) {
 54             smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, 
 55                 "non axis element found: name = %s", XMLChild->name );
 56             return( 1 );
 57         }
 58         n++;
 59     }
 60     if( xDataTOM_axes_initialize( smr, axes, n ) != 0 ) return( 1 );
 61 
 62     for( XMLChild = xDataXML_getFirstElement( XE ), i = 0; XMLChild != NULL; XMLChild = xDataXML_getNextElement( XMLChild ), i++ ) {
 63         attribute = "index";
 64         if( xDataXML_convertAttributeTo_xDataTOM_Int( smr, XMLChild, attribute, &index, 1 ) != 0 ) goto errA;
 65         attribute = "label";
 66         if( ( label = xDataXML_getAttributesValueInElement( XMLChild, attribute ) ) == NULL ) goto errA;
 67         attribute = "unit";
 68         if( ( unit  = xDataXML_getAttributesValueInElement( XMLChild, attribute  ) ) == NULL ) goto errA;
 69         if( i < ( n - 1 ) ) {
 70             attribute = "interpolation";
 71             if( ( sInterpolation = xDataXML_getAttributesValueInElement( XMLChild, attribute ) ) == NULL ) goto errA;
 72             if( xDataTOM_interpolation_setFromString( smr, &interpolation, sInterpolation ) != 0 ) goto err; }
 73         else {
 74             sInterpolation = "";
 75             if( xDataTOM_interpolation_set( smr, &interpolation, xDataTOM_interpolationFlag_linear, xDataTOM_interpolationFlag_linear, 
 76                 xDataTOM_interpolationQualifier_dependent ) != 0 ) goto err;
 77         }
 78         xDataTOM_axis_initialize( smr, &(axes->axis[i]), index, label, unit, &interpolation );
 79     }
 80     return( 0 );
 81 
 82 errA:
 83     smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1, "axis missing attribute '%s'", attribute );
 84 err:
 85     n = i;
 86     for( i = 0; i < n; i++ ) xDataTOM_axis_release( smr, &(axes->axis[i]) );
 87     smr_freeMemory( (void **) &(axes->axis) );
 88     return( 1 );
 89 }
 90 
 91 #if defined __cplusplus
 92 }
 93 #endif
 94