# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# Author : Anthony Geay
import SALOME
-import cPickle
+import pickle
+import SALOMEWrappedStdType
-class WrappedType(object):
+class InvokatorStyle:
+ def __init__(self,varPtr):
+ self._var_ptr=varPtr
+ def ptr(self):
+ return self._var_ptr
+ pass
+
+class InvokatorPossibleStyle(InvokatorStyle):
+ def __init__(self,varPtr):
+ InvokatorStyle.__init__(self,varPtr)
+ assert(self.__class__.IsOK(varPtr))
+
+ def invokePythonMethodOn(self,meth,argsInStrFrmt):
+ return self._var_ptr.invokePythonMethodOn(meth,argsInStrFrmt)
+
+ @classmethod
+ def IsOK(cls,varPtr):
+ return isinstance(varPtr,SALOME._objref_PickelizedPyObjRdExtServer) or isinstance(varPtr,SALOME._objref_PickelizedPyObjRdWrServer)
+ pass
+
+class InvokatorImpossibleStyle(InvokatorStyle):
+ def __init__(self,varPtr):
+ InvokatorStyle.__init__(self,varPtr)
+ assert(self.__class__.IsOK(varPtr))
+
+ def invokePythonMethodOn(self,meth,argsInStrFrmt):
+ raise Exception("Cannot invoke because it is readonly var !")
+
+ @classmethod
+ def IsOK(cls,varPtr):
+ return isinstance(varPtr,SALOME._objref_PickelizedPyObjRdOnlyServer)
+ pass
+
+def InvokatorStyleFactory(varPtr):
+ if InvokatorImpossibleStyle.IsOK(varPtr):
+ return InvokatorImpossibleStyle(varPtr)
+ if InvokatorPossibleStyle.IsOK(varPtr):
+ return InvokatorPossibleStyle(varPtr)
+ raise Exception("InvokatorStyleFactory : unmanaged type of var (%s)!"%(type(varPtr)))
+ pass
+
+class WrappedType(SALOMEWrappedStdType.WrappedType):
def __init__(self,varPtr,isTemporaryVar=False):
assert(isinstance(varPtr,SALOME._objref_PickelizedPyObjServer))
- self._var_ptr=varPtr
+ self._var_ptr=InvokatorStyleFactory(varPtr)
if not isTemporaryVar:
- self._var_ptr.Register()
+ self._var_ptr.ptr().Register()
self._is_temp=isTemporaryVar
pass
+ def ptr(self):
+ return self._var_ptr.ptr()
+
def local_copy(self):
- return cPickle.loads(self._var_ptr.fetchSerializedContent())
+ return pickle.loads(self._var_ptr.ptr().fetchSerializedContent())
def __str__(self):
return self.local_copy().__str__()
return (self._wrapped_type,(self.local_copy(),))
def assign(self,elt):
- assert(isinstance(self._var_ptr,SALOME._objref_PickelizedPyObjRdWrServer))
- st=cPickle.dumps(elt,cPickle.HIGHEST_PROTOCOL)
- self._var_ptr.setSerializedContent(st)
+ ptrCorba=self._var_ptr.ptr()
+ assert(isinstance(ptrCorba,SALOME._objref_PickelizedPyObjRdWrServer))
+ st=pickle.dumps(elt,pickle.HIGHEST_PROTOCOL)
+ ptrCorba.setSerializedContent(st)
pass
def __del__(self):
- self._var_ptr.UnRegister()
+ self._var_ptr.ptr().UnRegister()
pass
pass
-class List(WrappedType):
+class List(WrappedType,SALOMEWrappedStdType.List):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=list
def sort(self,*args):
ret=Caller(self._var_ptr,"sort")
return ret(*args)
-
+ # work on local copy
def count(self,*args):
return self.local_copy().count(*args)
return len(self.local_copy())
pass
-class Dict(WrappedType):
+class Dict(WrappedType,SALOMEWrappedStdType.Dict):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=dict
pass
-class Tuple(WrappedType):
+class Tuple(WrappedType,SALOMEWrappedStdType.Tuple):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=tuple
pass
-class Float(WrappedType):
+class Float(WrappedType,SALOMEWrappedStdType.Float):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=float
def __imul__(self,*args):
return self.local_copy().__mul__(*args)
- def __idiv__(self,*args):
- return self.local_copy().__div__(*args)
+ def __itruediv__(self,*args):
+ return self.local_copy().__truediv__(*args)
+
+ def __ifloordiv__(self,*args):
+ return self.local_copy().__floordiv__(*args)
def __add__(self,*args):
return self.local_copy().__add__(*args)
def __mul__(self,*args):
return self.local_copy().__mul__(*args)
- def __div__(self,*args):
- return self.local_copy().__div__(*args)
+ def __floordiv__(self,*args):
+ return self.local_copy().__floordiv__(*args)
+
+ def __truediv__(self,*args):
+ return self.local_copy().__truediv__(*args)
def __pow__(self,*args):
return self.local_copy().__pow__(*args)
return self.local_copy().real(*args)
pass
-class Int(WrappedType):
+class Int(WrappedType,SALOMEWrappedStdType.Int):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=int
def __imod__(self,*args):
return self.local_copy().__mod__(*args)
- def __idiv__(self,*args):
- return self.local_copy().__div__(*args)
+ def __itruediv__(self,*args):
+ return self.local_copy().__truediv__(*args)
+
+ def __ifloordiv__(self,*args):
+ return self.local_copy().__floordiv__(*args)
def __add__(self,*args):
return self.local_copy().__add__(*args)
def __mod__(self,*args):
return self.local_copy().__mod__(*args)
- def __div__(self,*args):
- return self.local_copy().__div__(*args)
-
+ def __truediv__(self,*args):
+ return self.local_copy().__truediv__(*args)
+
+ def __floordiv__(self,*args):
+ return self.local_copy().__floordiv__(*args)
+
def __pow__(self,*args):
return self.local_copy().__pow__(*args)
return self.local_copy().real(*args)
pass
-class String(WrappedType):
+class String(WrappedType,SALOMEWrappedStdType.String):
def __init__(self,varPtr,isTemporaryVar=False):
WrappedType.__init__(self,varPtr,isTemporaryVar)
self._wrapped_type=int
class Caller:
def __init__(self,varPtr,meth):
- assert(isinstance(varPtr,SALOME._objref_PickelizedPyObjServer))
self._var_ptr=varPtr
self._meth=meth
pass
def __call__(self,*args):
- ret=self._var_ptr.invokePythonMethodOn(self._meth,cPickle.dumps(args,cPickle.HIGHEST_PROTOCOL))
+ ret=self._var_ptr.invokePythonMethodOn(self._meth,pickle.dumps(args,pickle.HIGHEST_PROTOCOL))
return GetHandlerFromRef(ret,True)
pass
""" Returns a client that allows to handle a remote corba ref of a global var easily.
"""
assert(isinstance(objCorba,SALOME._objref_PickelizedPyObjServer))
- v=cPickle.loads(objCorba.fetchSerializedContent())
+ v=pickle.loads(objCorba.fetchSerializedContent())
if v is None:
objCorba.UnRegister()
return None
def CreateRdOnlyGlobalVar(value,varName,scopeName):
import salome
+ salome.salome_init()
dsm=salome.naming_service.Resolve("/DataServerManager")
d2s,isCreated=dsm.giveADataScopeCalled(scopeName)
- return GetHandlerFromRef(d2s.createRdOnlyVar(varName,cPickle.dumps(value,cPickle.HIGHEST_PROTOCOL)),False)
+ return GetHandlerFromRef(d2s.createRdOnlyVar(varName,pickle.dumps(value,pickle.HIGHEST_PROTOCOL)),False)
def CreateRdExtGlobalVar(value,varName,scopeName):
import salome
+ salome.salome_init()
dsm=salome.naming_service.Resolve("/DataServerManager")
d2s,isCreated=dsm.giveADataScopeCalled(scopeName)
- return GetHandlerFromRef(d2s.createRdExtVar(varName,cPickle.dumps(value,cPickle.HIGHEST_PROTOCOL)),False)
+ return GetHandlerFromRef(d2s.createRdExtVar(varName,pickle.dumps(value,pickle.HIGHEST_PROTOCOL)),False)
-def GetHandlerFromName(scopeName,varName):
+def GetHandlerFromName(varName,scopeName):
import salome
+ salome.salome_init()
dsm=salome.naming_service.Resolve("/DataServerManager")
d2s=dsm.retriveDataScope(scopeName)
return GetHandlerFromRef(d2s.retrieveVar(varName),False)