Salome HOME
Merge branch 'V9_2_2_BR'
[modules/kernel.git] / src / SALOMESDS / SALOMESDS_PickelizedPyObjRdExtServer.hxx
index 72ab708958fdceb92a8c3e38a9748c282e87b6fc..1592412225ec4a479ea8a06bb6132b37d9257bfc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019  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
 #include <Python.h>
 
 #include "SALOMESDS_PickelizedPyObjServer.hxx"
+#include "SALOMESDS_Sha1Keeper.hxx"
 
 namespace SALOMESDS
 {
-  class PickelizedPyObjRdExtServer : public PickelizedPyObjServer, public virtual POA_SALOME::PickelizedPyObjRdExtServer
+  class PickelizedPyObjRdExtInitServer;
+  
+  class PickelizedPyObjRdExtServer : public PickelizedPyObjServerModifiable, public virtual POA_SALOME::PickelizedPyObjRdExtServer
   {
   public:
-    PickelizedPyObjRdExtServer(DataScopeServer *father, const std::string& varName, const SALOME::ByteVec& value);
-    PickelizedPyObjRdExtServer(DataScopeServer *father, const std::string& varName, PyObject *obj);
-    ~PickelizedPyObjRdExtServer();
+    PickelizedPyObjRdExtServer(DataScopeServerBase *father, const std::string& varName, const SALOME::ByteVec& value);
+    PickelizedPyObjRdExtServer(DataScopeServerBase *father, const std::string& varName, PyObject *obj);
+    virtual ~PickelizedPyObjRdExtServer();
     SALOME::PickelizedPyObjRdExtServer_ptr invokePythonMethodOn(const char *method, const SALOME::ByteVec& args);
+    virtual PickelizedPyObjRdExtInitServer *buildInitInstanceFrom(const std::string& varName);
+  public:
+    std::string getAccessStr() const;
   private:
     void checkRdExtnessOf(const std::string& methodName, PyObject *argsPy);
     void checkListRdExtnessOf(const std::string& methodName, PyObject *argsPy);
     void checkDictRdExtnessOf(const std::string& methodName, PyObject *argsPy);
     void checkDictSetitemRdExtness(PyObject *argsPy);
+  public:
+    static const char ACCESS_REPR[];
+  };
+
+  class PickelizedPyObjRdExtFreeStyleServer : public PickelizedPyObjRdExtServer, public Sha1Keeper
+  {
+  public:
+    PickelizedPyObjRdExtFreeStyleServer(DataScopeServerBase *father, const std::string& varName, const SALOME::ByteVec& value, std::string&& compareFuncContent, SALOME::AutoPyRef&& compareFunc):PickelizedPyObjRdExtServer(father,varName,value),Sha1Keeper(std::move(compareFuncContent),std::move(compareFunc)) { }
+    PickelizedPyObjRdExtFreeStyleServer(DataScopeServerBase *father, const std::string& varName, PyObject *obj, std::string&& compareFuncContent, SALOME::AutoPyRef&& compareFunc):PickelizedPyObjRdExtServer(father,varName,obj),Sha1Keeper(std::move(compareFuncContent),std::move(compareFunc)) { }
+    PickelizedPyObjRdExtInitServer *buildInitInstanceFrom(const std::string& varName) override;
   };
 }