29class StaticDataObject {
31 using Pointer = std::shared_ptr<StaticDataObject>;
33 StaticDataObject(
const StaticDataObject &) =
delete;
34 StaticDataObject(StaticDataObject &&) =
delete;
35 StaticDataObject &operator=(
const StaticDataObject &) =
delete;
36 StaticDataObject &operator=(StaticDataObject &&) =
delete;
38 static Pointer Create() {
return Pointer{
new StaticDataObject}; }
40 const std::string &name()
const {
return name_; }
41 StaticDataObject &set_name(std::string n) {
46 int alignment()
const {
return alignment_; }
47 StaticDataObject &set_alignment(
int a) {
53 int itemBytes()
const {
return itemBytes_; }
54 StaticDataObject &set_itemBytes(
int b) {
60 const std::vector<std::uint8_t> &data()
const {
return data_; }
61 std::vector<std::uint8_t> &data() {
return data_; }
63 StaticDataObject &Push(
const std::string &,
bool =
false);
64 StaticDataObject &Push(
const std::u16string &,
bool bigEndian =
false);
65 StaticDataObject &Push(
const std::u32string &,
bool bigEndian =
false);
66 std::optional<std::string> AsString()
const;
67 std::optional<std::u16string> AsU16String(
bool bigEndian =
false)
const;
68 std::optional<std::u32string> AsU32String(
bool bigEndian =
false)
const;
69 llvm::raw_ostream &AsFortran(
70 llvm::raw_ostream &,
bool bigEndian =
false)
const;
78 std::vector<std::uint8_t> data_;