To overload standard SWIG wrapping we define a full specialization of std::map
with %extend for 4 basic methods : getitem, setitem, delitem and keys.
Then we complete the interface by deriving the shadow wrapper from
- the python mixin class (UserDict.DictMixin).
+ the python mixin class (UserDict.DictMixin / collections.MutableMapping with Python 3).
Do not forget to declare the new shadow class to SWIG with tname_swigregister(tname).
Objects returned by __getitem__ are declared new (%newobject) so that when destroyed they
call decrRef (see feature("unref") for RefCounter).
%template() std::pair<std::string, T* >;
%template(tname) std::map<std::string, T* >;
%pythoncode{
-from UserDict import DictMixin
-class tname(tname,DictMixin):pass
+from collections import MutableMapping
+class tname(tname,MutableMapping):pass
tname##_swigregister(tname)
}
%enddef
void SceneComposedNodeItem::shrinkExpandRecursive(bool toExpand, bool fromHere, ShrinkMode theShrinkMode)
{
- DEBTRACE("SceneComposedNodeItem::shrinkExpandRecursive " << isExpanding << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
+ DEBTRACE("SceneComposedNodeItem::shrinkExpandRecursive " << toExpand << " " << fromHere << " " << isExpanded() << " " << _label.toStdString());
bool toChangeShrinkState = false;
switch (theShrinkMode) {
{
OutputPyPort *p=(OutputPyPort *)*iter;
DEBTRACE( "port name: " << p->getName() );
- DEBTRACE( "port kind: " << p->edGetType()->kind() );
+ DEBTRACE( "port kind: " << p->typeName() );
DEBTRACE( "port pos : " << pos );
if(PyTuple_Check(finalResult))ob=PyTuple_GetItem(finalResult,pos) ;
else ob=finalResult;
bool isEmptyName;
std::string str(sct.getNotNullContainerName(cont,askingNode,isEmptyName));
- DEBTRACE("SalomeContainer::start " << str <<";"<< _sct.getHostName() <<";"<<_type);
+ DEBTRACE("SalomeContainer::start " << str <<";"<< sct.getHostName() <<";"<<shutdownLevel);
// Finalize parameters with components found in the container
if(!CORBA::is_nil(trueCont))
{
shutdownLevel=3;
- DEBTRACE( "container found: " << str << " " << _shutdownLevel );
+ DEBTRACE( "container found: " << str << " " << shutdownLevel );
}
else
{
shutdownLevel=2;
myparams.mode="start";
- DEBTRACE( "container not found: " << str << " " << _shutdownLevel);
+ DEBTRACE( "container not found: " << str << " " << shutdownLevel);
}
}
string s = ss.str();
ElementaryNode* node = _myRuntime->createScriptNode("",s);
_nodeMap[s] = node;
- ((InlineNode*) node)->setScript("print 'node 13'\n"
+ ((InlineNode*) node)->setScript("print('node 13')\n"
"import eo\n"
- "print ob\n"
+ "print(ob)\n"
"o=ob._narrow(eo.Obj)\n"
- "print o\n"
- "print o.echoLong(13)\n"
+ "print(o)\n"
+ "print(o.echoLong(13))\n"
"a=dble+1\n"
"dble=2*a\n"
- "print lng\n"
- "print '++++++++',s,'+++++++++++++'\n"
+ "print(lng)\n"
+ "print('++++++++',s,'+++++++++++++')\n"
"ob=o\n"
"seqstr=['aaa','bbb']\n"
"seqobj=[o,o,o,o]\n"
string s = ss.str();
ElementaryNode* node = _myRuntime->createScriptNode("",s);
_nodeMap[s] = node;
- ((InlineNode*) node)->setScript("print li\n"
- "print 'lili=',lili\n"
- "print 'lstr=',lstr\n"
- "print 'lobj=',lobj\n"
- "print 'llobj=',llobj\n"
- "print 'objc=',objc\n"
+ ((InlineNode*) node)->setScript("print(li)\n"
+ "print('lili=',lili)\n"
+ "print('lstr=',lstr)\n"
+ "print('lobj=',lobj)\n"
+ "print('llobj=',llobj)\n"
+ "print('objc=',objc)\n"
"li=2*li\n"
);
InputPort *i1 = node->edAddInputPort("li", _tc_seqdble);
string s = ss.str();
ElementaryNode* node = _myRuntime->createScriptNode("",s);
_nodeMap[s] = node;
- ((InlineNode*) node)->setScript("print li\n"
+ ((InlineNode*) node)->setScript("print(li)\n"
"li=[2*e for e in li]\n"
- "print 'obj=',obj\n"
- "print li\n"
- "print lngvec\n"
- "print dblevec\n"
+ "print('obj=',obj)\n"
+ "print(li)\n"
+ "print(lngvec)\n"
+ "print(dblevec)\n"
);
InputPort *i1 = node->edAddInputPort("li", _tc_seqdble);
InputPort *i2 = node->edAddInputPort("obj", _tc_obj);
((ElementaryNode*)_nodeMap["Node_10"])->load();
((ElementaryNode*)_nodeMap["Node_10"])->execute();
// CPPUNIT_ASSERT_DOUBLES_EQUAL(10.51, (ElementaryNode*)_nodeMap["Node_10"])
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution Python Node_11" );
- std::cerr << __LINE__ << std::endl;
((ElementaryNode*)_nodeMap["Node_11"])->load();
- std::cerr << __LINE__ << std::endl;
((ElementaryNode*)_nodeMap["Node_11"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution Python Node_12" );
((ElementaryNode*)_nodeMap["Node_12"])->load();
((ElementaryNode*)_nodeMap["Node_12"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_16" );
((ElementaryNode*)_nodeMap["Node_16"])->load();
((ElementaryNode*)_nodeMap["Node_16"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_17" );
((ElementaryNode*)_nodeMap["Node_17"])->load();
((ElementaryNode*)_nodeMap["Node_17"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_18" );
((ElementaryNode*)_nodeMap["Node_18"])->load();
((ElementaryNode*)_nodeMap["Node_18"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_19" );
((ElementaryNode*)_nodeMap["Node_19"])->load();
((ElementaryNode*)_nodeMap["Node_19"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_20" );
((ElementaryNode*)_nodeMap["Node_20"])->load();
((ElementaryNode*)_nodeMap["Node_20"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_21" );
((ElementaryNode*)_nodeMap["Node_21"])->load();
((ElementaryNode*)_nodeMap["Node_21"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_29" );
((ElementaryNode*)_nodeMap["Node_29"])->load();
((ElementaryNode*)_nodeMap["Node_29"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution Python Node_13" );
((ElementaryNode*)_nodeMap["Node_13"])->load();
((ElementaryNode*)_nodeMap["Node_13"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_22" );
((ElementaryNode*)_nodeMap["Node_22"])->load();
((ElementaryNode*)_nodeMap["Node_22"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_23" );
((ElementaryNode*)_nodeMap["Node_23"])->load();
((ElementaryNode*)_nodeMap["Node_23"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_24" );
((ElementaryNode*)_nodeMap["Node_24"])->load();
((ElementaryNode*)_nodeMap["Node_24"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_27" );
((ElementaryNode*)_nodeMap["Node_27"])->load();
((ElementaryNode*)_nodeMap["Node_27"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_28" );
((ElementaryNode*)_nodeMap["Node_28"])->load();
((ElementaryNode*)_nodeMap["Node_28"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_30" );
((ElementaryNode*)_nodeMap["Node_30"])->load();
((ElementaryNode*)_nodeMap["Node_30"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_32" );
((ElementaryNode*)_nodeMap["Node_32"])->load();
((ElementaryNode*)_nodeMap["Node_32"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_26" );
((ElementaryNode*)_nodeMap["Node_26"])->load();
((ElementaryNode*)_nodeMap["Node_26"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_31" );
((ElementaryNode*)_nodeMap["Node_31"])->load();
((ElementaryNode*)_nodeMap["Node_31"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution Python Node_14" );
((ElementaryNode*)_nodeMap["Node_14"])->load();
((ElementaryNode*)_nodeMap["Node_14"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution Python Node_15" );
((ElementaryNode*)_nodeMap["Node_15"])->load();
((ElementaryNode*)_nodeMap["Node_15"])->execute();
((ElementaryNode*)_nodeMap["Node_36"])->load();
((ElementaryNode*)_nodeMap["Node_36"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_33" );
((ElementaryNode*)_nodeMap["Node_33"])->load();
((ElementaryNode*)_nodeMap["Node_33"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_34" );
((ElementaryNode*)_nodeMap["Node_34"])->load();
((ElementaryNode*)_nodeMap["Node_34"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- execution CORBA Node_35" );
((ElementaryNode*)_nodeMap["Node_35"])->load();
((ElementaryNode*)_nodeMap["Node_35"])->execute();
- std::cerr << __LINE__ << std::endl;
DEBTRACE(" --- end of execution" );
}
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-import xmlrpclib,sys
+import xmlrpc.client,sys
data="""
<methodCall>
</methodCall>
"""
def echo(args):
- print args
+ print(args)
return args
f=open("input")
data=f.read()
f.close()
-print data
+print(data)
class Objref:
"""Wrapper for objrefs """
out.write(self.data or "")
out.write("</objref></value>\n")
-xmlrpclib.WRAPPERS=xmlrpclib.WRAPPERS+(Objref,)
+xmlrpc.client.WRAPPERS=xmlrpc.client.WRAPPERS+(Objref,)
def end_objref(self,data):
self.append(Objref(data))
self._value=0
-xmlrpclib.Unmarshaller.end_objref=end_objref
-xmlrpclib.Unmarshaller.dispatch["objref"]=end_objref
+xmlrpc.client.Unmarshaller.end_objref=end_objref
+xmlrpc.client.Unmarshaller.dispatch["objref"]=end_objref
-params, method = xmlrpclib.loads(data)
+params, method = xmlrpc.client.loads(data)
try:
call=eval(method)
response = (response,)
except:
# report exception back to server
- response = xmlrpclib.dumps( xmlrpclib.Fault(1, "%s:%s" % sys.exc_info()[:2]))
+ response = xmlrpc.client.dumps( xmlrpc.client.Fault(1, "%s:%s" % sys.exc_info()[:2]))
else:
- response = xmlrpclib.dumps( response, methodresponse=1)
+ response = xmlrpc.client.dumps( response, methodresponse=1)
-print response
+print(response)
f=open("output",'w')
f.write(response)
f.close()
static inline std::string convert(const TypeCode *t,PyObject* o,void*)
{
std::string s;
- if (PyBytes_Check(o))
- s= PyBytes_AS_STRING(o);
+ if (PyUnicode_Check(o))
+ {
+ Py_ssize_t size;
+ char *ptr = PyUnicode_AsUTF8AndSize(o, &size);
+ if (!ptr)
+ throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+ s.assign(ptr, size);
+ }
else
{
stringstream msg;
{
static inline std::string convert(const TypeCode *t,PyObject* o,void*,int protocol)
{
- if (PyBytes_Check(o) && strncmp(t->id(),"python",6)!=0)
+ if (PyUnicode_Check(o) && strncmp(t->id(),"python",6)!=0)
{
// the objref is used by Python as a string (prefix:value) keep it as a string
- return PyBytes_AS_STRING(o);
+ Py_ssize_t size;
+ std::string s;
+ char *ptr = PyUnicode_AsUTF8AndSize(o, &size);
+ if (!ptr)
+ throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+ s.assign(ptr, size);
+ return s;
}
if(strncmp(t->id(),"python",6)==0)
{
// It's a native Python object pickle it
PyObject* mod=PyImport_ImportModule("pickle");
PyObject *pickled=PyObject_CallMethod(mod,(char *)"dumps",(char *)"Oi",o,protocol);
- DEBTRACE(PyObject_REPR(pickled) );
+ DEBTRACE(PyObject_Repr(pickled) );
Py_DECREF(mod);
if(pickled==NULL)
{
PyErr_Print();
throw YACS::ENGINE::ConversionException("Problem in convertToYacsObjref<PYTHONImpl");
}
- std::string mystr=PyBytes_AsString(pystring);
+ Py_ssize_t size;
+ std::string mystr;
+ char *ptr = PyUnicode_AsUTF8AndSize(pystring, &size);
+ if (!ptr)
+ throw YACS::ENGINE::ConversionException("Conversion from PyUnicode to string failed");
+ mystr.assign(ptr, size);
Py_DECREF(pystring);
return mystr;
}
{
static inline PyObject* convert(const TypeCode *t,std::string& o)
{
- return PyBytes_FromString(o.c_str());
+ return PyUnicode_FromString(o.c_str());
}
};
template <>
if(t->isA(Runtime::_tc_file))
{
//It's an objref file. Convert it specially
- return PyBytes_FromString(o.c_str());
+ return PyUnicode_FromString(o.c_str());
}
if(strncmp(t->id(),"python",6)==0)
{
//It's a python pickled object, unpickled it
PyObject* mod=PyImport_ImportModule("pickle");
PyObject *ob=PyObject_CallMethod(mod,(char *)"loads",(char *)"s#",o.c_str(),o.length());
- DEBTRACE(PyObject_REPR(ob));
+ DEBTRACE(PyObject_Repr(ob));
Py_DECREF(mod);
if(ob==NULL)
{
PyObject* mod=PyImport_ImportModule("pickle");
PyObject *ob=PyObject_CallMethod(mod,(char *)"loads",(char *)"s#",s,buffer->length());
PyObject *pickled=PyObject_CallMethod(mod,(char *)"dumps",(char *)"Oi",ob,protocol);
- DEBTRACE(PyObject_REPR(pickled));
+ DEBTRACE(PyObject_Repr(pickled));
std::string mystr=PyBytes_AsString(pickled);
Py_DECREF(mod);
Py_DECREF(ob);
template<>
inline bool checkString<PYTHONImpl,PyObject*,void*>(const TypeCode *t,PyObject* o,void* aux)
{
- if (PyBytes_Check(o))
+ if (PyUnicode_Check(o))
return true;
else
{
template<>
inline bool checkObjref<PYTHONImpl,PyObject*,void*>(const TypeCode *t,PyObject* o,void* aux)
{
- if (PyBytes_Check(o))
+ if (PyUnicode_Check(o))
return true;
if(strncmp(t->id(),"python",6)==0) // a Python object is expected (it's always true)
return true;
YACSLoader loader;
Executor executor;
-
try
{
p=loader.load(schema);
+
+ std::cerr << __FILE__ << std::endl;
DEBTRACE("Proc *p = " << p);
std::ofstream f("toto");
p->writeDot(f);
f.close();
DEBTRACE("+++++++++++++++++++ BEGIN execution " << schema);
+ std::cerr << __FILE__ << std::endl;
executor.RunW(p,0);
+ std::cerr << __FILE__ << std::endl;
+
DEBTRACE("+++++++++++++++++++ END execution " << schema);
std::ofstream g("titi");
p->writeDot(g);
catch (YACS::Exception& e)
{
DEBTRACE("YACS exception caught: ");
+ std::cerr << __FILE__ << std::endl;
DEBTRACE(e.what());
+ std::cerr << __FILE__ << std::endl;
+
DEBTRACE("+++++++++++++++++++ END test in error " << schema);
return 1;
}
catch (const std::ios_base::failure&)
{
+ std::cerr << __FILE__ << std::endl;
+
DEBTRACE("io failure");
+ std::cerr << __FILE__ << std::endl;
+
DEBTRACE("+++++++++++++++++++ END test in error " << schema);
return 1;
}
const char *p = tc->name();
if ( *p != '\0' )
{
+ std::cerr << __FILE__ << std::endl;
+
DEBTRACE(p);
}
else
{
+ std::cerr << __FILE__ << std::endl;
DEBTRACE(tc->id());
}
DEBTRACE("+++++++++++++++++++ END test in error " << schema);
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-import xmlrpclib,sys
+import xmlrpc.client,sys
#example
data="""
</methodCall>
"""
def echo(args):
- print "args=",args
+ print("args=",args)
if not args:
return None
elif len(args) == 1:
f=open("input")
data=f.read()
f.close()
-print data
+print(data)
class Objref:
"""Wrapper for objrefs """
out.write(self.data or "")
out.write("</objref></value>\n")
-xmlrpclib.WRAPPERS=xmlrpclib.WRAPPERS+(Objref,)
+xmlrpc.client.WRAPPERS=xmlrpc.client.WRAPPERS+(Objref,)
def end_objref(self,data):
self.append(Objref(data))
self._value=0
-xmlrpclib.Unmarshaller.end_objref=end_objref
-xmlrpclib.Unmarshaller.dispatch["objref"]=end_objref
+xmlrpc.client.Unmarshaller.end_objref=end_objref
+xmlrpc.client.Unmarshaller.dispatch["objref"]=end_objref
-params, method = xmlrpclib.loads(data)
+params, method = xmlrpc.client.loads(data)
try:
call=eval(method)
response = (response,)
except:
# report exception back to server
- response = xmlrpclib.dumps( xmlrpclib.Fault(1, "%s:%s" % sys.exc_info()[:2]))
+ response = xmlrpc.client.dumps( xmlrpc.client.Fault(1, "%s:%s" % sys.exc_info()[:2]))
else:
- response = xmlrpclib.dumps( response, methodresponse=1)
+ response = xmlrpc.client.dumps( response, methodresponse=1)
-print response
+print(response)
f=open("output",'w')
f.write(response)
f.close()
{
XML_SetUserData(saxContext,pp);
_stackParser.push(pp);
- DEBTRACE("parser::SetUserDataAndPush, stack size: " << sp.size());
+ DEBTRACE("parser::SetUserDataAndPush, stack size: " << pp->_level);
}
void parser::onEnd(const XML_Char *el, parser* child)