#ifndef VECTOR_H
#define VECTOR_H

#include "symbol.h"

class State;

class Vector : public Symbol
{
public :

    Vector(const Frost::s_str& sName) : Symbol(sName) {}
    Vector(const Frost::s_str& sName, const Frost::s_ctnr<Frost::s_refptr<Symbol>>& dValues) : Symbol(sName), v(dValues) {}

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

    static Frost::s_bool           MatchesConstructor(const Frost::s_str& s);
    static Frost::s_refptr<Symbol> CreateFrom(State& mState, const Frost::s_str& n, const Frost::s_str& s, Frost::s_str& e);
    static void                    Register(State& mState);

    Frost::s_ctnr<Frost::s_refptr<Symbol>> v;
    static const Frost::s_str TYPE;
};

#endif // VECTOR_H
