Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
Open sidebar
yade-dev
trunk
Commits
2bd48fbd
Commit
2bd48fbd
authored
Jul 03, 2014
by
Anton Gladky
Browse files
First stage of C++11 implementing.
Not working yet
parent
4fd00cf4
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
28 additions
and
16 deletions
+28
-16
CMakeLists.txt
CMakeLists.txt
+10
-0
core/Omega.cpp
core/Omega.cpp
+2
-2
gui/qt4/GLViewerDisplay.cpp
gui/qt4/GLViewerDisplay.cpp
+2
-2
lib/base/Math.hpp
lib/base/Math.hpp
+5
-3
lib/serialization/Serializable.hpp
lib/serialization/Serializable.hpp
+6
-6
py/mathWrap/miniEigen.cpp
py/mathWrap/miniEigen.cpp
+2
-2
py/wrapper/yadeWrapper.cpp
py/wrapper/yadeWrapper.cpp
+1
-1
No files found.
CMakeLists.txt
View file @
2bd48fbd
...
...
@@ -62,7 +62,17 @@ IF ("${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang")
ENDIF
()
#===========================================================
ADD_DEFINITIONS
(
" -DYADE_PTR_CAST=boost::static_pointer_cast -DYADE_CAST=static_cast -DYADE_PTR_DYN_CAST=boost::dynamic_pointer_cast "
)
IF
(
CXX11
)
SET
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-std=c++0x"
)
ADD_DEFINITIONS
(
" -DCXX11 -DTYPEOF=decltype"
)
ELSE
(
CXX11
)
ADD_DEFINITIONS
(
" -DTYPEOF=typeof"
)
ENDIF
(
CXX11
)
#===========================================================
IF
(
CMAKE_CXX_FLAGS
)
#If flags are set, add only neccessary flags
IF
(
DEBUG
)
...
...
core/Omega.cpp
View file @
2bd48fbd
...
...
@@ -247,7 +247,7 @@ void Omega::loadSimulation(const string& f, bool quiet){
RenderMutexLock
lock
;
if
(
isMem
){
istringstream
iss
(
memSavedSimulations
[
f
]);
yade
::
ObjectIO
::
load
<
typeof
(
scene
),
boost
::
archive
::
binary_iarchive
>
(
iss
,
"scene"
,
scene
);
yade
::
ObjectIO
::
load
<
TYPEOF
(
scene
),
boost
::
archive
::
binary_iarchive
>
(
iss
,
"scene"
,
scene
);
}
else
{
yade
::
ObjectIO
::
load
(
f
,
"scene"
,
scene
);
}
...
...
@@ -269,7 +269,7 @@ void Omega::saveSimulation(const string& f, bool quiet){
if
(
boost
::
algorithm
::
starts_with
(
f
,
":memory:"
)){
if
(
memSavedSimulations
.
count
(
f
)
>
0
&&
!
quiet
)
LOG_INFO
(
"Overwriting in-memory saved simulation "
<<
f
);
ostringstream
oss
;
yade
::
ObjectIO
::
save
<
typeof
(
scene
),
boost
::
archive
::
binary_oarchive
>
(
oss
,
"scene"
,
scene
);
yade
::
ObjectIO
::
save
<
TYPEOF
(
scene
),
boost
::
archive
::
binary_oarchive
>
(
oss
,
"scene"
,
scene
);
memSavedSimulations
[
f
]
=
oss
.
str
();
}
else
{
...
...
gui/qt4/GLViewerDisplay.cpp
View file @
2bd48fbd
...
...
@@ -40,7 +40,7 @@ void GLViewer::useDisplayParameters(size_t n){
const
shared_ptr
<
DisplayParameters
>&
dp
=
dispParams
[
n
];
string
val
;
if
(
dp
->
getValue
(
"OpenGLRenderer"
,
val
)){
istringstream
oglre
(
val
);
yade
::
ObjectIO
::
load
<
typeof
(
renderer
),
boost
::
archive
::
xml_iarchive
>
(
oglre
,
"renderer"
,
renderer
);
yade
::
ObjectIO
::
load
<
TYPEOF
(
renderer
),
boost
::
archive
::
xml_iarchive
>
(
oglre
,
"renderer"
,
renderer
);
}
else
{
LOG_WARN
(
"OpenGLRenderer configuration not found in display parameters, skipped."
);}
if
(
dp
->
getValue
(
"GLViewer"
,
val
)){
GLViewer
::
setState
(
val
);
displayMessage
(
"Loaded view configuration #"
+
boost
::
lexical_cast
<
string
>
(
n
));
}
...
...
@@ -53,7 +53,7 @@ void GLViewer::saveDisplayParameters(size_t n){
if
(
dispParams
.
size
()
<=
n
){
while
(
dispParams
.
size
()
<=
n
)
dispParams
.
push_back
(
shared_ptr
<
DisplayParameters
>
(
new
DisplayParameters
));}
assert
(
n
<
dispParams
.
size
());
shared_ptr
<
DisplayParameters
>&
dp
=
dispParams
[
n
];
ostringstream
oglre
;
yade
::
ObjectIO
::
save
<
typeof
(
renderer
),
boost
::
archive
::
xml_oarchive
>
(
oglre
,
"renderer"
,
renderer
);
yade
::
ObjectIO
::
save
<
TYPEOF
(
renderer
),
boost
::
archive
::
xml_oarchive
>
(
oglre
,
"renderer"
,
renderer
);
dp
->
setValue
(
"OpenGLRenderer"
,
oglre
.
str
());
dp
->
setValue
(
"GLViewer"
,
GLViewer
::
getState
());
displayMessage
(
"Saved view configuration ot #"
+
boost
::
lexical_cast
<
string
>
(
n
));
...
...
lib/base/Math.hpp
View file @
2bd48fbd
...
...
@@ -62,12 +62,14 @@ using std::make_pair;
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
#ifndef
__GXX_EXPERIMENTAL_CXX0X__
#ifndef
DCXX11
# include <boost/shared_ptr.hpp>
using
boost
::
shared_ptr
;
#else
# include <memory>
using
std
::
shared_ptr
;
//# include <memory>
//using std::shared_ptr;
# include <boost/shared_ptr.hpp>
using
boost
::
shared_ptr
;
#endif
#include <boost/foreach.hpp>
...
...
lib/serialization/Serializable.hpp
View file @
2bd48fbd
...
...
@@ -75,15 +75,15 @@ void make_setter_postLoad(C& instance, const T& val){ instance.*A=val; /* cerr<<
#define _DEF_READWRITE_BY_VALUE(thisClass,attr,doc) add_property(
/*attr name*/
BOOST_PP_STRINGIZE(attr),
/*read access*/
boost::python::make_getter(&thisClass::attr,boost::python::return_value_policy<boost::python::return_by_value>()),
/*write access*/
boost::python::make_setter(&thisClass::attr,boost::python::return_value_policy<boost::python::return_by_value>()),
/*docstring*/
doc)
// not sure if this is correct: the getter works by value, the setter by reference (the default)...?
#define _DEF_READWRITE_BY_VALUE_POSTLOAD(thisClass,attr,doc) add_property(
/*attr name*/
BOOST_PP_STRINGIZE(attr),
/*read access*/
boost::python::make_getter(&thisClass::attr,boost::python::return_value_policy<boost::python::return_by_value>()),
/*write access*/
make_setter_postLoad<thisClass,
typeof
(thisClass::attr),&thisClass::attr>,
/*docstring*/
doc)
#define _DEF_READWRITE_BY_VALUE_POSTLOAD(thisClass,attr,doc) add_property(
/*attr name*/
BOOST_PP_STRINGIZE(attr),
/*read access*/
boost::python::make_getter(&thisClass::attr,boost::python::return_value_policy<boost::python::return_by_value>()),
/*write access*/
make_setter_postLoad<thisClass,
TYPEOF
(thisClass::attr),&thisClass::attr>,
/*docstring*/
doc)
#define _DEF_READONLY_BY_VALUE(thisClass,attr,doc) add_property(
/*attr name*/
BOOST_PP_STRINGIZE(attr),
/*read access*/
boost::python::make_getter(&thisClass::attr,boost::python::return_value_policy<boost::python::return_by_value>()),
/*docstring*/
doc)
/* Huh, add_static_property does not support doc argument (add_property does); if so, use add_property for now at least... */
#define _DEF_READWRITE_BY_VALUE_STATIC(thisClass,attr,doc) _DEF_READWRITE_BY_VALUE(thisClass,attr,doc)
// the conditional yade::py_wrap_ref should be eliminated by compiler at compile-time, as it depends only on types, not their values
// most of this could be written with templates, including flags (ints can be template args)
#define _DEF_READWRITE_CUSTOM(thisClass,attr) if(!(_ATTR_FLG(attr) & yade::Attr::hidden)){ bool _ro(_ATTR_FLG(attr) & Attr::readonly), _post(_ATTR_FLG(attr) & Attr::triggerPostLoad), _ref(yade::py_wrap_ref<
typeof
(thisClass::_ATTR_NAM(attr))>::value); std::string docStr(_ATTR_DOC(attr)); docStr+=" :yattrflags:`"+boost::lexical_cast<string>(_ATTR_FLG(attr))+"` "; \
#define _DEF_READWRITE_CUSTOM(thisClass,attr) if(!(_ATTR_FLG(attr) & yade::Attr::hidden)){ bool _ro(_ATTR_FLG(attr) & Attr::readonly), _post(_ATTR_FLG(attr) & Attr::triggerPostLoad), _ref(yade::py_wrap_ref<
TYPEOF
(thisClass::_ATTR_NAM(attr))>::value); std::string docStr(_ATTR_DOC(attr)); docStr+=" :yattrflags:`"+boost::lexical_cast<string>(_ATTR_FLG(attr))+"` "; \
if ( _ref && !_ro && !_post) _classObj.def_readwrite(_ATTR_NAM_STR(attr),&thisClass::_ATTR_NAM(attr),docStr.c_str()); \
else if ( _ref && !_ro && _post) _classObj.add_property(_ATTR_NAM_STR(attr),boost::python::make_getter(&thisClass::_ATTR_NAM(attr)),make_setter_postLoad<thisClass,
typeof
(thisClass::_ATTR_NAM(attr)),&thisClass::_ATTR_NAM(attr)>,docStr.c_str()); \
else if ( _ref && !_ro && _post) _classObj.add_property(_ATTR_NAM_STR(attr),boost::python::make_getter(&thisClass::_ATTR_NAM(attr)),make_setter_postLoad<thisClass,
TYPEOF
(thisClass::_ATTR_NAM(attr)),&thisClass::_ATTR_NAM(attr)>,docStr.c_str()); \
else if ( _ref && _ro) _classObj.def_readonly(_ATTR_NAM_STR(attr),&thisClass::_ATTR_NAM(attr),docStr.c_str()); \
else if (!_ref && !_ro && !_post) _classObj._DEF_READWRITE_BY_VALUE(thisClass,_ATTR_NAM(attr),docStr.c_str()); \
else if (!_ref && !_ro && _post) _classObj._DEF_READWRITE_BY_VALUE_POSTLOAD(thisClass,_ATTR_NAM(attr),docStr.c_str()); \
...
...
@@ -98,11 +98,11 @@ void make_setter_postLoad(C& instance, const T& val){ instance.*A=val; /* cerr<<
// gcc<=4.3 is not able to compile this code; we will just not generate any code for deprecated attributes in such case
#if !defined(__GNUG__) || (defined(__GNUG__) && (__GNUC__ > 4 || (__GNUC__==4 && __GNUC_MINOR__ > 3)))
// gcc > 4.3 && non-gcc compilers
#define _PYSET_ATTR_DEPREC(x,thisClass,z) if(key==BOOST_PP_STRINGIZE(_DEPREC_OLDNAME(z))){ _DEPREC_WARN(thisClass,z); _DEPREC_NEWNAME(z)=boost::python::extract<
typeof
(_DEPREC_NEWNAME(z))>(value); return; }
#define _PYSET_ATTR_DEPREC(x,thisClass,z) if(key==BOOST_PP_STRINGIZE(_DEPREC_OLDNAME(z))){ _DEPREC_WARN(thisClass,z); _DEPREC_NEWNAME(z)=boost::python::extract<
TYPEOF
(_DEPREC_NEWNAME(z))>(value); return; }
#define _PYATTR_DEPREC_DEF(x,thisClass,z) .add_property(BOOST_PP_STRINGIZE(_DEPREC_OLDNAME(z)),&thisClass::BOOST_PP_CAT(_getDeprec_,_DEPREC_OLDNAME(z)),&thisClass::BOOST_PP_CAT(_setDeprec_,_DEPREC_OLDNAME(z)),"|ydeprecated| alias for :yref:`" BOOST_PP_STRINGIZE(_DEPREC_NEWNAME(z)) "<" BOOST_PP_STRINGIZE(thisClass) "." BOOST_PP_STRINGIZE(_DEPREC_NEWNAME(z)) ">` (" _DEPREC_COMMENT(z) ")")
#define _PYHASKEY_ATTR_DEPREC(x,thisClass,z) if(key==BOOST_PP_STRINGIZE(_DEPREC_OLDNAME(z))) return true;
/* accessors functions ussing warning */
#define _ACCESS_DEPREC(x,thisClass,z)
/*getter*/
typeof
(_DEPREC_NEWNAME(z)) BOOST_PP_CAT(_getDeprec_,_DEPREC_OLDNAME(z))(){_DEPREC_WARN(thisClass,z); return _DEPREC_NEWNAME(z); }
/*setter*/
void BOOST_PP_CAT(_setDeprec_,_DEPREC_OLDNAME(z))(const
typeof
(_DEPREC_NEWNAME(z))& val){_DEPREC_WARN(thisClass,z); _DEPREC_NEWNAME(z)=val; }
#define _ACCESS_DEPREC(x,thisClass,z)
/*getter*/
TYPEOF
(_DEPREC_NEWNAME(z)) BOOST_PP_CAT(_getDeprec_,_DEPREC_OLDNAME(z))(){_DEPREC_WARN(thisClass,z); return _DEPREC_NEWNAME(z); }
/*setter*/
void BOOST_PP_CAT(_setDeprec_,_DEPREC_OLDNAME(z))(const
TYPEOF
(_DEPREC_NEWNAME(z))& val){_DEPREC_WARN(thisClass,z); _DEPREC_NEWNAME(z)=val; }
#else
#define _PYSET_ATTR_DEPREC(x,y,z)
#define _PYATTR_DEPREC_DEF(x,y,z)
...
...
@@ -114,7 +114,7 @@ void make_setter_postLoad(C& instance, const T& val){ instance.*A=val; /* cerr<<
// loop bodies for attribute access
#define _PYGET_ATTR(x,y,z) if(key==_ATTR_NAM_STR(z)) return boost::python::object(_ATTR_NAM(z));
//#define _PYSET_ATTR(x,y,z) if(key==_ATTR_NAM_STR(z)) { _ATTR_NAM(z)=boost::python::extract<typeof(_ATTR_NAM(z))>(t[1]); boost::python::delitem(d,boost::python::object(_ATTR_NAM(z))); continue; }
#define _PYSET_ATTR(x,y,z) if(key==_ATTR_NAM_STR(z)) { _ATTR_NAM(z)=boost::python::extract<
typeof
(_ATTR_NAM(z))>(value); return; }
#define _PYSET_ATTR(x,y,z) if(key==_ATTR_NAM_STR(z)) { _ATTR_NAM(z)=boost::python::extract<
TYPEOF
(_ATTR_NAM(z))>(value); return; }
#define _PYKEYS_ATTR(x,y,z) ret.append(_ATTR_NAM_STR(z));
#define _PYHASKEY_ATTR(x,y,z) if(key==_ATTR_NAM_STR(z)) return true;
#define _PYDICT_ATTR(x,y,z) if(!(_ATTR_FLG(z) & yade::Attr::hidden)) ret[_ATTR_NAM_STR(z)]=boost::python::object(_ATTR_NAM(z));
...
...
py/mathWrap/miniEigen.cpp
View file @
2bd48fbd
...
...
@@ -146,8 +146,8 @@ EIG_WRAP_METH0(Vector2r,Zero); EIG_WRAP_METH0(Vector2r,UnitX); EIG_WRAP_METH0(Ve
EIG_WRAP_METH0
(
Vector2i
,
Zero
);
EIG_WRAP_METH0
(
Vector2i
,
UnitX
);
EIG_WRAP_METH0
(
Vector2i
,
UnitY
);
EIG_WRAP_METH0
(
Vector2i
,
Ones
);
EIG_WRAP_METH0
(
Quaternionr
,
Identity
);
#define EIG_OP1(klass,op,sym)
typeof
((sym klass()).eval()) klass##op(const klass& self){ return (sym self).eval();}
#define EIG_OP2(klass,op,sym,klass2)
typeof
((klass() sym klass2()).eval()) klass##op##klass2(const klass& self, const klass2& other){ return (self sym other).eval(); }
#define EIG_OP1(klass,op,sym)
TYPEOF
((sym klass()).eval()) klass##op(const klass& self){ return (sym self).eval();}
#define EIG_OP2(klass,op,sym,klass2)
TYPEOF
((klass() sym klass2()).eval()) klass##op##klass2(const klass& self, const klass2& other){ return (self sym other).eval(); }
#define EIG_OP2_INPLACE(klass,op,sym,klass2) klass klass##op##klass2(klass& self, const klass2& other){ self sym other; return self; }
...
...
py/wrapper/yadeWrapper.cpp
View file @
2bd48fbd
...
...
@@ -683,7 +683,7 @@ class pyOmega{
void
switchToScene
(
int
i
){
OMEGA
.
switchToScene
(
i
);}
string
sceneToString
(){
ostringstream
oss
;
yade
::
ObjectIO
::
save
<
typeof
(
OMEGA
.
getScene
()),
boost
::
archive
::
binary_oarchive
>
(
oss
,
"scene"
,
OMEGA
.
getScene
());
yade
::
ObjectIO
::
save
<
TYPEOF
(
OMEGA
.
getScene
()),
boost
::
archive
::
binary_oarchive
>
(
oss
,
"scene"
,
OMEGA
.
getScene
());
oss
.
flush
();
return
oss
.
str
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment