20 #ifndef _libint2_src_bin_libint_util_h_ 21 #define _libint2_src_bin_libint_util_h_ 26 #include <smart_ptr.h> 27 #include <util_types.h> 31 std::string
to_string(FunctionPosition pos);
33 template <
class Target,
class Source> SafePtr<Target> require_dynamic_cast(
const SafePtr<Source>& s) {
34 const SafePtr<Target> t = dynamic_pointer_cast<Target,Source>(s);
36 throw std::runtime_error(
"require_dynamic_cast: dynamic case failed");
39 template <
class Target,
class Source>
const Target* require_dynamic_cast(
const Source* s) {
40 const Target* t =
dynamic_cast<Target*
>(s);
42 throw std::runtime_error(
"require_dynamic_cast: dynamic case failed");
47 template <
typename T> std::string
class_name(T* ptr=
nullptr) {
49 std::unique_ptr<char, void (*)(void*)>
50 result { abi::__cxa_demangle(ptr==
nullptr?
typeid(T).name():
typeid(ptr).name(),NULL,NULL,&status),
52 return status == 0 ? result.get() :
"unknown";
std::string class_name(T *ptr=nullptr)
Definition: util.h:47
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:23
std::string to_string(const T &x)
Converts x to its string representation.
Definition: entity.h:71