class Type:
    def __init__(self, s):
        # Currently no recursion is allowed,
        # so you can't have a dictionary in dictionary.
        self.name = None
        self.first = None
        self.second = None

        # Dictionary.
        if s.startswith("std::map"):
            self.name = "map"
            # Remove prefix and suffix.
            prefix = "std::map<"
            s = s[len(prefix):]
            suffix = ">"
            s = s[:-len(suffix)]
            # Get map types.
            parts = s.split(", ")
            self.first = parts[0]
            self.second = parts[1]
        # By default we treat the type as is.
        else:
            self.name = s

    def __repr__(self):
        return self.__str__()
    def __str__(self):
        return f"Type(n/f/s: '{self.name}'/'{self.first}'/'{self.second}')"
