1 //=============================================================================
2 // File : MEDMEM_Fieldint_i.hxx
5 // Copyright : EDF 2002
6 // $Header: /export/home/PAL/MED_SRC/src/MEDMEM_I/MEDMEM_Fieldint_i.hxx
7 //=============================================================================
10 #include "MEDMEM_FieldInt_i.hxx"
11 #include "MEDMEM_convert.hxx"
12 #include "SenderFactory.hxx"
13 #include "MultiCommException.hxx"
14 using namespace MEDMEM;
16 //=============================================================================
20 //=============================================================================
21 FIELDINT_i::FIELDINT_i(): FIELD_i()
23 BEGIN_OF("Default Constructor FIELDINT_i");
24 END_OF("Default Constructor FIELDINT_i");
26 //=============================================================================
30 //=============================================================================
31 FIELDINT_i::~FIELDINT_i()
33 BEGIN_OF("Default Destructor FIELDINT_i");
34 END_OF("Default Destructor FIELDINT_i");
36 //=============================================================================
40 //=============================================================================
41 FIELDINT_i::FIELDINT_i(::FIELD<int> * const f, bool ownCppPtr):
44 BEGIN_OF("Constructor FIELDINT_i");
45 END_OF(" Constructor FIELDINT_i");
47 //=============================================================================
49 * Constructor par recopie
51 //=============================================================================
52 FIELDINT_i::FIELDINT_i(FIELDINT_i &fi):FIELD_i(fi)
54 BEGIN_OF("Constructor FIELDINT_i");
55 END_OF(" Constructor FIELDINT_i");
58 //=============================================================================
60 * CORBA: Accessor for Field's values
62 //=============================================================================
64 SALOME_MED::long_array* FIELDINT_i::getValue( SALOME_MED::medModeSwitch mode )
65 throw (SALOME::SALOME_Exception)
68 THROW_SALOME_CORBA_EXCEPTION("No associated Field", \
69 SALOME::INTERNAL_ERROR);
70 SALOME_MED::long_array_var myseq = new SALOME_MED::long_array;
73 medModeSwitch modemed=convertIdlModeToMedMode(mode);
74 // ::FIELD<int> *ptrI=dynamic_cast< ::FIELD<int>* >(_fieldTptr);
75 //the alternative is not safe but the previous one fails using the python API
76 MEDMEM::FIELD<int> *ptrI = static_cast< MEDMEM::FIELD<int>* >(_fieldTptr);
78 const int * values =ptrI->getValue(modemed);
79 int nbval=ptrI->getValueLength(modemed);
81 for (int i=0; i<nbval; i++)
86 catch(MEDEXCEPTION &ex)
88 MESSAGE("Unable to acces Field");
89 THROW_SALOME_CORBA_EXCEPTION(ex.what(), SALOME::INTERNAL_ERROR);
93 //=============================================================================
95 * CORBA: Accessor for Field's values
97 //=============================================================================
99 SALOME::SenderInt_ptr FIELDINT_i::getSenderForValue( SALOME_MED::medModeSwitch mode )
100 throw (SALOME::SALOME_Exception)
102 if (_fieldTptr==NULL)
103 THROW_SALOME_CORBA_EXCEPTION("No associated Field", \
104 SALOME::INTERNAL_ERROR);
105 SALOME::SenderInt_ptr ret;
108 medModeSwitch modemed=convertIdlModeToMedMode(mode);
109 //::FIELD<int> *ptrI=dynamic_cast< ::FIELD<int>* >(_fieldTptr);
110 //the alternative is not safe but the previous one fails using the python API
111 MEDMEM::FIELD<int> *ptrI=static_cast< MEDMEM::FIELD<int>* >(_fieldTptr);
112 const int * values =ptrI->getValue(modemed);
113 int nbval=ptrI->getValueLength(modemed);
114 ret=SenderFactory::buildSender(*this,values,nbval);
116 catch(MEDEXCEPTION &ex)
118 MESSAGE("Unable to acces Field");
119 THROW_SALOME_CORBA_EXCEPTION(ex.what(), SALOME::INTERNAL_ERROR);