1 //=============================================================================
2 // File : MEDMEM_Fielddouble_i.hxx
5 // Copyright : EDF 2002
6 // $Header: /export/home/PAL/MED_SRC/src/MEDMEM_I/MEDMEM_Fielddouble_i.hxx
7 //=============================================================================
9 #include "MEDMEM_FieldDouble_i.hxx"
10 #include "utilities.h"
11 #include "MEDMEM_convert.hxx"
12 #include "SenderFactory.hxx"
13 #include "MultiCommException.hxx"
14 using namespace MEDMEM;
16 //=============================================================================
20 //=============================================================================
21 FIELDDOUBLE_i::FIELDDOUBLE_i(): FIELD_i()
23 BEGIN_OF("Default Constructor FIELDDOUBLE_i");
24 END_OF("Default Constructor FIELDDOUBLE_i");
26 //=============================================================================
30 //=============================================================================
31 FIELDDOUBLE_i::~FIELDDOUBLE_i()
33 BEGIN_OF("Default Destructor FIELDDOUBLE_i");
34 END_OF("Default Destructor FIELDDOUBLE_i");
36 //=============================================================================
38 * Constructor par recopie
40 //=============================================================================
41 FIELDDOUBLE_i::FIELDDOUBLE_i(FIELDDOUBLE_i & fd):
44 BEGIN_OF("Default Constructor FIELDDOUBLE_i");
45 END_OF("Default Constructor FIELDDOUBLE_i");
47 //=============================================================================
51 //=============================================================================
52 FIELDDOUBLE_i::FIELDDOUBLE_i(::FIELD<double> * const f, bool ownCppPtr):
55 BEGIN_OF("Constructor FIELDDOUBLE_i");
56 END_OF(" Constructor FIELDDOUBLE_i");
59 //=============================================================================
61 * CORBA: Accessor for Field's values
63 //=============================================================================
65 SALOME_MED::double_array* FIELDDOUBLE_i::getValue( SALOME_MED::medModeSwitch mode )
66 throw (SALOME::SALOME_Exception)
69 THROW_SALOME_CORBA_EXCEPTION("No associated Field", \
70 SALOME::INTERNAL_ERROR);
71 SALOME_MED::double_array_var myseq = new SALOME_MED::double_array;
74 medModeSwitch modemed=convertIdlModeToMedMode(mode);
75 // ::FIELD<double> *ptrD=dynamic_cast< ::FIELD<double>* >(_fieldTptr);
76 // the alternative is not safe but the previous fails using the python API
77 MEDMEM::FIELD<double> *ptrD = (MEDMEM::FIELD<double> *) _fieldTptr;
78 const double * values =ptrD->getValue(modemed);
79 int nbval=ptrD->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::Sender_ptr FIELDDOUBLE_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::Sender_ptr ret;
108 medModeSwitch modemed=convertIdlModeToMedMode(mode);
109 ::FIELD<double> *ptrD=dynamic_cast< ::FIELD<double>* >(_fieldTptr);
110 const double * values =ptrD->getValue(modemed);
111 int nbval=ptrD->getValueLength(modemed);
112 ret=SenderFactory::buildSender(*this,values,nbval);
114 catch (MEDEXCEPTION &ex)
116 MESSAGE("Unable to acces Field ");
117 THROW_SALOME_CORBA_EXCEPTION(ex.what(), SALOME::INTERNAL_ERROR);