#ifndef SIMGRID_MC_VARIABLE_HPP
#define SIMGRID_MC_VARIABLE_HPP
-#include <string>
+#include <cstddef>
-#include <xbt/base.h>
+#include <string>
-#include "mc_forward.h"
-#include "mc/LocationList.hpp"
+#include "src/mc/mc_forward.h"
+#include "src/mc/LocationList.hpp"
namespace simgrid {
namespace mc {
/** A variable (global or local) in the model-checked program */
class Variable {
public:
- Variable();
-
- unsigned dwarf_offset; /* Global offset of the field. */
- int global;
+ Variable() {}
+ std::uint32_t id = 0;
+ bool global = false;
std::string name;
- unsigned type_id;
- simgrid::mc::Type* type;
+ unsigned type_id = 0;
+ simgrid::mc::Type* type = nullptr;
+
+ /** Address of the variable (if it is fixed) */
+ void* address = nullptr;
- // Use either of:
+ /** Description of the location of the variable (if it's not fixed) */
simgrid::dwarf::LocationList location_list;
- void* address;
- size_t start_scope;
- simgrid::mc::ObjectInformation* object_info;
-};
+ /** Offset of validity of the variable (DW_AT_start_scope)
+ *
+ * This is an offset from the variable scope beginning. This variable
+ * is only valid starting from this offset.
+ */
+ std::size_t start_scope = 0;
-inline
-Variable::Variable()
-{
- this->dwarf_offset = 0;
- this->global = 0;
- this->type = nullptr;
- this->type_id = 0;
- this->address = nullptr;
- this->start_scope = 0;
- this->object_info = nullptr;
-}
+ simgrid::mc::ObjectInformation* object_info = nullptr;
+};
}
}