1 // Copyright (C) 2007-2014 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 // Author : Anthony Geay (CEA/DEN)
21 namespace INTERP_KERNEL
26 Exception(const char* what);
27 ~Exception() throw ();
28 const char *what() const throw ();
31 std::string __str__() const
33 return std::string(self->what());
44 void declareAsNew() const;
45 virtual void updateTime() const;
46 unsigned int getTimeOfThis() const;
60 const char *MEDCouplingVersionStr();
61 int MEDCouplingVersion();
62 int MEDCouplingSizeOfVoidStar();
63 bool MEDCouplingByteOrder();
64 const char *MEDCouplingByteOrderStr();
69 std::size_t getHeapMemorySize() const throw(INTERP_KERNEL::Exception);
70 std::string getHeapMemorySizeStr() const throw(INTERP_KERNEL::Exception);
71 bool isObjectInTheProgeny(const BigMemoryObject *obj) const throw(INTERP_KERNEL::Exception);
72 virtual std::size_t getHeapMemorySizeWithoutChildren() const throw(INTERP_KERNEL::Exception);
73 virtual ~BigMemoryObject();
76 virtual PyObject *getDirectChildren() const throw(INTERP_KERNEL::Exception)
78 std::vector<const BigMemoryObject *> c(self->getDirectChildren());
79 PyObject *ret(PyList_New(c.size()));
80 for(std::size_t i=0;i<c.size();i++)
81 PyList_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(c[i]),SWIGTYPE_p_ParaMEDMEM__BigMemoryObject, 0 | 0 ));
85 PyObject *getAllTheProgeny() const throw(INTERP_KERNEL::Exception)
87 std::vector<const BigMemoryObject *> c(self->getAllTheProgeny());
88 PyObject *ret(PyList_New(c.size()));
89 for(std::size_t i=0;i<c.size();i++)
90 PyList_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(c[i]),SWIGTYPE_p_ParaMEDMEM__BigMemoryObject, 0 | 0 ));
94 static std::size_t GetHeapMemorySizeOfObjs(PyObject *objs) throw(INTERP_KERNEL::Exception)
96 std::vector<const BigMemoryObject *> cppObjs;
97 convertFromPyObjVectorOfObj<const ParaMEDMEM::BigMemoryObject *>(objs,SWIGTYPE_p_ParaMEDMEM__BigMemoryObject,"BigMemoryObject",cppObjs);
98 return BigMemoryObject::GetHeapMemorySizeOfObjs(cppObjs);
103 class RefCountObjectOnly
106 bool decrRef() const;
107 void incrRef() const;
108 int getRCValue() const;
110 ~RefCountObjectOnly();
113 class RefCountObject : public RefCountObjectOnly, public BigMemoryObject
122 PyObject *MEDCouplingVersionMajMinRel()
124 int tmp0=0,tmp1=0,tmp2=0;
125 MEDCouplingVersionMajMinRel(tmp0,tmp1,tmp2);
126 PyObject *res = PyList_New(3);
127 PyList_SetItem(res,0,SWIG_From_int(tmp0));
128 PyList_SetItem(res,1,SWIG_From_int(tmp1));
129 PyList_SetItem(res,2,SWIG_From_int(tmp2));
133 bool MEDCouplingHasNumPyBindings()
142 bool MEDCouplingHasSciPyBindings()
151 std::string MEDCouplingCompletionScript() throw(INTERP_KERNEL::Exception)
153 static const char script[]="import rlcompleter,readline\nreadline.parse_and_bind('tab:complete')";
154 std::ostringstream oss; oss << "MEDCouplingCompletionScript : error when trying to activate completion ! readline not present ?\nScript is :\n" << script;
155 if(PyRun_SimpleString(script)!=0)
156 throw INTERP_KERNEL::Exception(oss.str().c_str());
157 return std::string(script);