#ifndef TORSION_TYPE_H
#define TORSION_TYPE_H

#ifndef TEXT_H
#include "Text.h"
#endif

#include <map>
//#include <string>

namespace MM
{

class Torsion_type
{
    struct Tuple
    {
        Text a1_, a2_, a3_, a4_;

        Tuple () {}

        Tuple (Text const& a1, Text const& a2, Text const& a3, Text const& a4)
            : a1_(a1), a2_(a2), a3_(a3), a4_(a4) {}
    };

    std::map <Text, Tuple>       map_;
    //std::map <std::string, Tuple>       map_;

public:
    static Torsion_type &       singleton ();

    static void                 add (Text const & type,
                                     Text const & atom_1,
                                     Text const & atom_2,
                                     Text const & atom_3,
                                     Text const & atom_4);

    static void                 get (Text const & type,  
                                     Text & atom_1,
                                     Text & atom_2,
                                     Text & atom_3,
                                     Text & atom_4);
};

}//MM

#endif //TORSION_TYPE_H
