X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fregistrar.cpp;h=1f9dcca4690b09d24efa8c457dff3c79a5406ed2;hp=fc54830230016f1e4146656ae9e0155033124cb1;hb=d2de9f5307c47adb2df13359002d987653c38a6a;hpb=0a1b35cf1e59c9e3aae33de8febaa1c8f4bbe630 diff --git a/ginac/registrar.cpp b/ginac/registrar.cpp index fc548302..1f9dcca4 100644 --- a/ginac/registrar.cpp +++ b/ginac/registrar.cpp @@ -3,7 +3,7 @@ * GiNaC's class registrar (for class basic and all classes derived from it). */ /* - * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,45 +17,25 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include +#include #include #include "registrar.h" -#ifndef NO_GINAC_NAMESPACE namespace GiNaC { -#endif // ndef NO_GINAC_NAMESPACE -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 string &class_name) +tinfo_t 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")); + return registered_class_info::find(class_name)->options.get_id(); } -unsigned int find_tinfo_key(const string &class_name) +unarch_func find_unarch_func(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_unarch_func(); } -unarch_func find_unarch_func(const string &class_name) -{ - registered_class_info *p = find_registered_class_info(class_name); - return p->unarchive; -} - - -#ifndef NO_GINAC_NAMESPACE } // namespace GiNaC -#endif // ndef NO_GINAC_NAMESPACE