MCPcopy Create free account
hub / github.com/csmith-project/csmith / ArrayVariable

Class ArrayVariable

src/ArrayVariable.h:43–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41using namespace std;
42
43class ArrayVariable : public Variable
44{
45public:
46 static ArrayVariable* CreateArrayVariable(const CGContext& cg_context, Block* blk, const std::string &name, const Type *type, const Expression* init, const CVQualifiers* qfer, const Variable* isFieldVarOf);
47 ArrayVariable(const ArrayVariable& av);
48 virtual ~ArrayVariable(void);
49
50 void add_index(const Expression* e);
51 void set_index(size_t index, const Expression* e);
52 virtual size_t get_dimension(void) const { return sizes.size();}
53 unsigned long size_in_bytes(void) const;
54 unsigned long get_size(void) const;
55 std::vector<unsigned int> get_sizes(void) const { return sizes;}
56 const std::vector<const Expression*>& get_indices(void) const { return indices;}
57 const std::vector<const Expression*>& get_more_init_values(void) const { return init_values;}
58 bool no_loop_initializer(void) const;
59
60 ArrayVariable* itemize(void) const;
61 ArrayVariable* itemize(const vector<int>& const_indices) const;
62 ArrayVariable* itemize(const std::vector<const Variable*>& indices, Block* blk) const;
63 ArrayVariable* itemize(const std::vector<const Expression*>& indices, Block* blk) const;
64 ArrayVariable* rnd_mutate(void);
65 bool is_variant(const Variable* v) const;
66 virtual bool is_global(void) const;
67 virtual bool is_visible_local(const Block* blk) const;
68
69 string make_print_index_str(const vector<const Variable*> &cvs) const;
70 virtual void Output(std::ostream &) const;
71 virtual void OutputDef(std::ostream &out, int indent) const;
72 virtual void OutputDecl(std::ostream &) const;
73 virtual void hash(std::ostream& out) const;
74 virtual const Variable* get_collective(void) const { return collective ? collective : this;}
75 virtual const ArrayVariable* get_array(string& /*field*/) const { return this;}
76 virtual void OutputLowerBound(std::ostream &) const;
77 virtual void OutputUpperBound(std::ostream &) const;
78 void output_with_indices(std::ostream &out, const std::vector<const Variable*>& cvs) const;
79 void output_checksum_with_indices(std::ostream &out, const std::vector<const Variable*>& cvs, string field_name) const;
80 void output_init(std::ostream &out, const Expression* init, const vector<const Variable*>& cvs, int indent) const;
81 void output_addr_checks(std::ostream &out, const Variable* var, string field_name, int indent) const;
82 void add_init_value(const Expression* e) { init_values.push_back(e);}
83 const vector<const Expression*>& get_init_values(void) const { return init_values;}
84 string build_initializer_str(const vector<string>& init_strings) const;
85 string build_init_recursive(size_t dimen, const vector<string>& init_strings) const;
86
87 const ArrayVariable* collective;
88 Block* parent;
89private:
90 ArrayVariable(Block* blk, const std::string &name, const Type *type, const Expression* init, const CVQualifiers* qfer, const vector<unsigned int>& sizes, const Variable* isFieldVarOf);
91
92
93 const std::vector<unsigned int> sizes;
94 std::vector<const Expression*> indices;
95 std::vector<const Expression*> init_values;
96};
97
98///////////////////////////////////////////////////////////////////////////////
99

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected