Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/xDataTOM_importXML_KalbachMann.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_KalbachMannCoefficientsToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_KalbachMannCoefficients *coefficients );
 18 /*
 19 ************************************************************
 20 */
 21 int xDataXML_KalbachMannToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_element *TE ) {
 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 {
 40         smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1,
 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 {
 55             smr_setReportError3( smr, xDataXML_get_smrUserInterfaceFromElement( XE ), xDataTOM_smrLibraryID, -1,
 56                 "invalid element '%s' in xData = 'KalbachMann'", XMLChild->name );
 57             goto err;
 58         }
 59     }
 60 
 61     return( 0 );
 62 
 63 err:
 64     smr_freeMemory( (void **) &(xDI->data) );
 65     return( 1 );
 66 }
 67 /*
 68 ************************************************************
 69 */
 70 static int xDataXML_KalbachMannCoefficientsToTOM( statusMessageReporting *smr, xDataXML_element *XE, xDataTOM_KalbachMannCoefficients *coefficients ) {
 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 
 86 err:
 87     if( coefficients->coefficients != NULL ) smr_freeMemory( (void **) &(coefficients->coefficients) );
 88     return( 1 );
 89 }
 90 
 91 #if defined __cplusplus
 92 }
 93 #endif
 94