mirror of
https://git.sfja.dk/Mikkel/slige.git
synced 2025-01-18 13:06:30 +00:00
33 lines
843 B
C++
33 lines
843 B
C++
#include "alloc.hpp"
|
|
#include <format>
|
|
#include <iostream>
|
|
#include <string>
|
|
|
|
using namespace sliger::heap;
|
|
|
|
auto Array::at(int32_t index) & -> Value&
|
|
{
|
|
if (index >= static_cast<int32_t>(this->values.size()) || index < 0) {
|
|
std::cout << std::format(
|
|
"index not in range, expected to be in range (0..{}), got: {}\n",
|
|
this->values.size(), index);
|
|
exit(1);
|
|
}
|
|
return values.at(static_cast<size_t>(index));
|
|
}
|
|
|
|
auto Struct::at(const std::string& field) & -> Value&
|
|
{
|
|
if (this->fields.find(field) == this->fields.end()) {
|
|
std::cout << std::format(
|
|
"field name not in struct, got: \"{}\"\n", field);
|
|
exit(1);
|
|
}
|
|
return this->fields.at(field);
|
|
}
|
|
|
|
void Struct::assign(const std::string& field, Value&& value)
|
|
{
|
|
this->fields.insert_or_assign(field, value);
|
|
}
|