X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fregistrar.cpp;h=c20b0448caf5aae1aabf5d4a769668c79eda75b1;hp=34c9111884059f22ab49db86d73a7e14a6fa3fd1;hb=c1285bb62f3a86454ca26260cf8b4352238a1fc5;hpb=dbd9c306a74f1cb258c0d15a346b973b39deaad2 diff --git a/ginac/registrar.cpp b/ginac/registrar.cpp index 34c91118..c20b0448 100644 --- a/ginac/registrar.cpp +++ b/ginac/registrar.cpp @@ -21,37 +21,21 @@ */ #include +#include #include #include "registrar.h" namespace GiNaC { -registered_class_info *first_registered_class = NULL; - -/** Find registered_class_info strucure by class name. */ -static inline registered_class_info *find_registered_class_info(const std::string &class_name) +unsigned find_tinfo_key(const std::string &class_name) { - registered_class_info *p = first_registered_class; - while (p) { - if (class_name == p->name) - return p; - p = p->next; - } - throw (std::runtime_error("class '" + class_name + "' not registered")); -} - -unsigned int find_tinfo_key(const std::string &class_name) -{ - registered_class_info *p = find_registered_class_info(class_name); - return p->tinfo_key; + return registered_class_info::find(class_name)->options.get_id(); } unarch_func find_unarch_func(const std::string &class_name) { - registered_class_info *p = find_registered_class_info(class_name); - return p->unarchive; + return registered_class_info::find(class_name)->options.get_unarch_func(); } - } // namespace GiNaC