mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
Fix non-Python builds
This commit is contained in:
parent
260fd39da5
commit
72226e8673
@ -33,6 +33,11 @@ namespace ngcore
|
||||
std::make_unique<std::map<std::string, detail::ClassArchiveInfo>>();
|
||||
(*type_register)[classname] = info;
|
||||
}
|
||||
void Archive :: RemoveArchiveRegister(const std::string& classname)
|
||||
{
|
||||
if(IsRegistered(classname))
|
||||
type_register->erase(classname);
|
||||
}
|
||||
bool Archive :: IsRegistered(const std::string& classname)
|
||||
{
|
||||
if(type_register == nullptr) type_register =
|
||||
|
@ -124,8 +124,18 @@ namespace ngcore
|
||||
// once and put them together correctly afterwards. Therefore all objects that may live in
|
||||
// Python should be archived using this Shallow function. If Shallow is called from C++ code
|
||||
// it archives the object normally.
|
||||
#ifdef NETGEN_PYTHON
|
||||
template<typename T>
|
||||
Archive& Shallow(T& val); // implemented in python_ngcore.hpp
|
||||
#else // NETGEN_PYTHON
|
||||
template<typename T>
|
||||
Archive& Shallow(T& val)
|
||||
{
|
||||
static_assert(detail::is_any_pointer<T>, "ShallowArchive must be given pointer type!");
|
||||
*this & val;
|
||||
return *this;
|
||||
}
|
||||
#endif // NETGEN_PYTHON
|
||||
|
||||
#ifdef NETGEN_PYTHON
|
||||
virtual void ShallowOutPython(const pybind11::object& /*unused*/)
|
||||
@ -572,6 +582,7 @@ namespace ngcore
|
||||
// Set ClassArchiveInfo for Demangled typeid, this is done by creating an instance of
|
||||
// RegisterClassForArchive<type, bases...>
|
||||
static void SetArchiveRegister(const std::string& classname, const detail::ClassArchiveInfo& info);
|
||||
static void RemoveArchiveRegister(const std::string& classname);
|
||||
static bool IsRegistered(const std::string& classname);
|
||||
|
||||
// Helper class for up-/downcasting
|
||||
@ -638,6 +649,10 @@ namespace ngcore
|
||||
{ return typeid(T) == ti ? p : Archive::Caster<T, Bases...>::tryDowncast(ti, p); };
|
||||
Archive::SetArchiveRegister(std::string(Demangle(typeid(T).name())),info);
|
||||
}
|
||||
~RegisterClassForArchive()
|
||||
{
|
||||
Archive::RemoveArchiveRegister(std::string(Demangle(typeid(T).name())));
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user