#ifndef _SYSYF_GLOBALVARIABLE_H_ #define _SYSYF_GLOBALVARIABLE_H_ #include "Module.h" #include "User.h" #include "Constant.h" namespace SysYF { namespace IR { class GlobalVariable : public User { private: bool is_const_ ; bool is_array_ ; Ptr> array_dim_; Ptr init_val_; explicit GlobalVariable(std::string name, Ptr m, Ptr ty, bool is_const, Ptr init_val = nullptr); void init(std::string name, Ptr m, Ptr ty, bool is_const, Ptr init_val = nullptr); public: static Ptr create(std::string name, Ptr m, Ptr ty, bool is_const, Ptr init_val); Ptr get_init() { return init_val_; } bool is_const() { return is_const_; } bool is_array() { return is_array_; } void set_array(Ptr> array_dim) { is_array_ = true; array_dim_ = array_dim; } Ptr> get_array_dim() { if (is_array_) return array_dim_; else return nullptr; } std::string print(); }; } } #endif //_SYSYF_GLOBALVARIABLE_H_