Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/B/BSScript_Array.h
T
2026-05-30 18:33:24 +12:00

82 lines
2.5 KiB
C++

#pragma once
#include "RE/B/BSIntrusiveRefCounted.h"
#include "RE/B/BSScript_TypeInfo.h"
#include "RE/B/BSScript_Variable.h"
#include "RE/B/BSSpinLock.h"
#include "RE/B/BSTArray.h"
namespace RE
{
namespace BSScript
{
class Array :
public BSIntrusiveRefCounted // 00
{
private:
// Array * ctor(const TypeInfo *type_info, std::uint32_t initial_size = 0);
public:
using value_type = Variable;
using size_type = std::uint32_t;
using difference_type = std::int32_t;
using reference = value_type&;
using const_reference = const value_type&;
using pointer = value_type*;
using const_pointer = const value_type*;
using iterator = value_type*;
using const_iterator = const value_type*;
using reverse_iterator = std::reverse_iterator<iterator>;
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
// Array(const TypeInfo *type_info, std::uint32_t initial_size = 0);
~Array();
[[nodiscard]] reference operator[](size_type a_pos);
[[nodiscard]] const_reference operator[](size_type a_pos) const;
[[nodiscard]] reference front();
[[nodiscard]] const_reference front() const;
[[nodiscard]] reference back();
[[nodiscard]] const_reference back() const;
[[nodiscard]] pointer data() noexcept;
[[nodiscard]] const_pointer data() const noexcept;
[[nodiscard]] iterator begin() noexcept;
[[nodiscard]] const_iterator begin() const noexcept;
[[nodiscard]] const_iterator cbegin() const noexcept;
[[nodiscard]] iterator end() noexcept;
[[nodiscard]] const_iterator end() const noexcept;
[[nodiscard]] const_iterator cend() const noexcept;
[[nodiscard]] reverse_iterator rbegin() noexcept;
[[nodiscard]] const_reverse_iterator rbegin() const noexcept;
[[nodiscard]] const_reverse_iterator crbegin() const noexcept;
[[nodiscard]] reverse_iterator rend() noexcept;
[[nodiscard]] const_reverse_iterator rend() const noexcept;
[[nodiscard]] const_reverse_iterator crend() const noexcept;
[[nodiscard]] bool empty() const noexcept;
[[nodiscard]] size_type size() const noexcept;
[[nodiscard]] size_type max_size() const noexcept;
[[nodiscard]] TypeInfo& type_info();
[[nodiscard]] const TypeInfo& type_info() const;
[[nodiscard]] TypeInfo::RawType type() const;
// members
TypeInfo elementType; // 08
BSSpinLock elementsLock; // 10
BSTArray<Variable> elements; // 18
};
static_assert(sizeof(Array) == 0x30);
}
}