Skip to content
Snippets Groups Projects
PrimitiveRegistrator.cpp 6.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * PrimitiveRegistrator.cpp
     *
     *  Created on: 11. 7. 2017
     *	  Author: Jan Travnicek
     */
    
    
    #include <registry/CastRegistry.hpp>
    #include <registry/ValuePrinterRegistry.hpp>
    #include <registry/ImmediateRegistry.hpp>
    #include <registry/ContainerRegistry.hpp>
    
    
    #include <primitive/Double.h>
    #include <primitive/Integer.h>
    
    #include <primitive/Unsigned.h>
    
    #include <primitive/Bool.h>
    #include <primitive/UnsignedLong.h>
    #include <primitive/String.h>
    
    
    #include <object/Object.h>
    
    
    class PrimitiveRegistrator {
    
    	PrimitiveRegistrator ( ) {
    
    		abstraction::CastRegistry::registerCast < double, int > ( );
    		abstraction::CastRegistry::registerCast < int, double > ( );
    
    		abstraction::CastRegistry::registerCastAlgorithm < std::string, int > ( ext::to_string );
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    		abstraction::CastRegistry::registerCastAlgorithm < int, std::string > ( static_cast < int ( * ) ( const std::string & ) > ( ext::from_string < int > ) );
    
    		abstraction::CastRegistry::registerCast < bool, int > ( );
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    		abstraction::CastRegistry::registerCastAlgorithm < bool, std::string > ( static_cast < bool ( * ) ( const std::string & ) > ( ext::from_string < bool > ) );
    		abstraction::CastRegistry::registerCastAlgorithm < unsigned, std::string > ( "unsigned", ext::to_string < std::string > ( ), static_cast < unsigned ( * ) ( const std::string & ) > ( ext::from_string < unsigned > ) );
    		abstraction::CastRegistry::registerCastAlgorithm < double, std::string > ( static_cast < double ( * ) ( const std::string & ) > ( ext::from_string < double > ) );
    
    		abstraction::CastRegistry::registerCast < size_t, int > ( "size_t", ext::to_string < int > ( ) );
    		abstraction::CastRegistry::registerCast < size_t, int > ( );
    		abstraction::CastRegistry::registerCast < int, size_t > ( );
    
    		abstraction::CastRegistry::registerCast < unsigned, int > ( );
    
    
    		abstraction::CastRegistry::registerCast < long, int > ( "long", ext::to_string < int > ( ) );
    
    
    		abstraction::CastRegistry::registerCast < int, primitive::Integer > ( );
    
    		abstraction::CastRegistry::registerCast < primitive::Integer, int > ( );
    
    
    		abstraction::ContainerRegistry::registerSet < int > ( );
    
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < int > ( );
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    		abstraction::ValuePrinterRegistry::registerValuePrinter < unsigned > ( );
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < double > ( );
    		abstraction::ValuePrinterRegistry::registerValuePrinter < std::string > ( );
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < void > ( );
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < bool > ( );
    
    
    		abstraction::ImmediateRegistry::registerImmediate < int > ( );
    		abstraction::ImmediateRegistry::registerImmediate < std::string > ( );
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < object::Object > ( );
    		abstraction::ValuePrinterRegistry::registerValuePrinter < ext::set < object::Object > > ( );
    
    		abstraction::ValuePrinterRegistry::registerValuePrinter < ext::set < unsigned > > ( );
    
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::vector<object::Object> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::vector<ext::pair<object::Object,
                                                                                        object::Object> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<object::Object>, double> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<object::Object>, int> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<object::Object>, long> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<ext::pair<object::Object,
                                                                                                  object::Object> >,
                                                                            double> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<ext::pair<object::Object,
                                                                                                  object::Object> >,
                                                                            int> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::pair<ext::vector<ext::pair<object::Object,
                                                                                                  object::Object> >,
                                                                            long> >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<object::Object,
                                                                           ext::map<object::Object, double> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<object::Object,
                                                                           ext::map<object::Object, int> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<object::Object,
                                                                           ext::map<object::Object, long> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<ext::pair<object::Object, object::Object>,
                                                                           ext::map<ext::pair<object::Object,
                                                                                              object::Object>,
                                                                                    double> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<ext::pair<object::Object, object::Object>,
                                                                           ext::map<ext::pair<object::Object,
                                                                                              object::Object>, int> > >();
          abstraction::ValuePrinterRegistry::registerValuePrinter<ext::map<ext::pair<object::Object, object::Object>,
                                                                           ext::map<ext::pair<object::Object,
                                                                                              object::Object>, long> > >();
    
    		abstraction::ContainerRegistry::registerSet < object::Object > ( );
    
    auto primitiveRegistrator = PrimitiveRegistrator ( );