Version: 8.3.0
Main Page
Related Pages
Packages
Data Structures
Files
File List
Globals
SALOMESDS_PickelizedPyObjServer.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2
//
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.
7
//
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.
12
//
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
16
//
17
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18
//
19
// Author : Anthony GEAY (EDF R&D)
20
21
#ifndef __SALOMESDS_PICKELIZEDPYOBJSERVER_HXX__
22
#define __SALOMESDS_PICKELIZEDPYOBJSERVER_HXX__
23
24
#include "SALOMEconfig.h"
25
#include CORBA_SERVER_HEADER(SALOME_SDS)
26
27
#include <Python.h>
28
29
#include "
SALOMESDS_BasicDataServer.hxx
"
30
31
#include <vector>
32
33
namespace
SALOMESDS
34
{
35
class
PickelizedPyObjServer
:
public
BasicDataServer
,
public
virtual
POA_SALOME::PickelizedPyObjServer
36
{
37
public
:
38
PickelizedPyObjServer
(
DataScopeServerBase
*father,
const
std::string& varName,
const
SALOME::ByteVec
& value);
39
PickelizedPyObjServer
(
DataScopeServerBase
*father,
const
std::string& varName, PyObject *obj);
40
virtual
~PickelizedPyObjServer
();
41
void
setSerializedContent
(
const
SALOME::ByteVec
& newValue);
42
SALOME::ByteVec
*
fetchSerializedContent
();
43
public
:
44
bool
isDict
();
45
void
checkKeyNotAlreadyPresent
(PyObject *key);
46
void
checkKeyPresent
(PyObject *key);
47
PyObject *
getPyObj
()
const
{
return
_self
; }
48
public
:
49
virtual
void
addKeyValueHard
(PyObject *key, PyObject *value);
50
virtual
void
removeKeyInVarErrorIfNotAlreadyExisting
(PyObject *key);
51
virtual
void
addKeyValueErrorIfAlreadyExisting
(PyObject *key, PyObject *value) = 0;
52
virtual
std::string
getAccessStr
()
const
= 0;
53
public
:
54
static
void
FromByteSeqToCpp
(
const
SALOME::ByteVec
& bsToBeConv, std::string& ret);
55
static
void
FromCppToByteSeq
(
const
std::string& strToBeConv,
SALOME::ByteVec
& ret);
56
static
SALOME::ByteVec
*
FromCppToByteSeq
(
const
std::string& strToBeConv);
57
static
PyObject *
GetPyObjFromPickled
(
const
std::string& pickledData,
DataScopeServerBase
*dsb);
58
static
PyObject *
GetPyObjFromPickled
(
const
std::vector<unsigned char>& pickledData,
DataScopeServerBase
*dsb);
59
static
std::string
Pickelize
(PyObject *obj,
DataScopeServerBase
*dsb);
60
PyObject *
getPyObjFromPickled
(
const
std::string& pickledData);
61
PyObject *
getPyObjFromPickled
(
const
std::vector<unsigned char>& pickledData);
62
std::string
pickelize
(PyObject *obj);
63
void
setNewPyObj
(PyObject *obj);
64
void
setSerializedContentInternal
(
const
SALOME::ByteVec
& newValue);
65
static
PyObject *
CreateDftObjFromType
(PyObject *globals,
const
std::string& typeName);
66
private
:
67
void
checkKeyPresence
(PyObject *key,
bool
presence);
68
protected
:
69
static
const
char
FAKE_VAR_NAME_FOR_WORK
[];
70
PyObject *
_self
;
71
PortableServer::POA_var
_poa
;
72
};
73
74
class
PickelizedPyObjServerModifiable
:
public
PickelizedPyObjServer
75
{
76
public
:
77
PickelizedPyObjServerModifiable
(
DataScopeServerBase
*father,
const
std::string& varName,
const
SALOME::ByteVec
& value);
78
PickelizedPyObjServerModifiable
(
DataScopeServerBase
*father,
const
std::string& varName, PyObject *obj);
79
public
:
80
void
addKeyValueErrorIfAlreadyExisting
(PyObject *key, PyObject *value);
81
void
removeKeyInVarErrorIfNotAlreadyExisting
(PyObject *key);
82
};
83
}
84
85
#endif
src
SALOMESDS
SALOMESDS_PickelizedPyObjServer.hxx
Copyright © 2007-2017 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS