1
/***************************************************************************
2
* (c) J�rgen Riegel (juergen.riegel@web.de) 2008 *
4
* This file is part of the FreeCAD CAx development system. *
6
* This library is free software; you can redistribute it and/or *
7
* modify it under the terms of the GNU Library General Public *
8
* License as published by the Free Software Foundation; either *
9
* version 2 of the License, or (at your option) any later version. *
11
* This library is distributed in the hope that it will be useful, *
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14
* GNU Library General Public License for more details. *
16
* You should have received a copy of the GNU Library General Public *
17
* License along with this library; see the file COPYING.LIB. If not, *
18
* write to the Free Software Foundation, Inc., 59 Temple Place, *
19
* Suite 330, Boston, MA 02111-1307, USA *
21
***************************************************************************/
24
#include "PreCompiled.h"
32
/// Here the FreeCAD includes sorted by Base,App,Gui......
34
#include "Exception.h"
35
#include "Interpreter.h"
36
#include <CXX/Objects.hxx>
42
//**************************************************************************
43
// Construction/Destruction
47
* A more elaborate description of the constructor.
51
UuidStr = CreateUuid();
56
* A more elaborate description of the destructor.
62
//**************************************************************************
63
//**************************************************************************
65
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
67
std::string Uuid::CreateUuid(void)
72
unsigned char *uuidStr;
74
rstat = UuidCreate(&uuid);
75
if (rstat != RPC_S_OK) throw Base::Exception("Cannot convert a unique Windows UUID to a string");
77
rstat = UuidToString(&uuid, &uuidStr);
78
if (rstat != RPC_S_OK) throw Base::Exception("Cannot convert a unique Windows UUID to a string");
80
std::string Uuid((char *)uuidStr);
82
/* convert it from rcp memory to our own */
83
//container = nssUTF8_Duplicate(uuidStr, NULL);
84
RpcStringFree(&uuidStr);
86
// use Python's implemententation
88
PyGILStateLocker lock;
90
Py::Module module(PyImport_ImportModule("uuid"),true);
91
Py::Callable method(module.getAttr("uuid4"));
93
Py::Object guid = method.apply(arg);
94
Uuid = guid.as_string();
96
catch (Py::Exception& e) {
98
throw Base::Exception("Creation of UUID failed");