#ifndef SYMBOL_H
#define SYMBOL_H

#include <frost_utils.h>

class State;

class Symbol
{
public :

    Symbol(const Frost::s_str& sName) : name(sName), sname(sName) {}
    virtual ~Symbol() {}

    virtual Frost::s_str PrintContent() const;
    virtual Frost::s_str GetType() const;
    virtual Frost::s_str GetTrueType() const;
    virtual Frost::s_str GetFullType() const;
    virtual Frost::s_refptr<Symbol> Clone() const;

    static void Register(State& mState);

    Frost::s_str name;
    Frost::s_str sname;
    static const Frost::s_str TYPE;
};

#endif // SYMBOL_H
