MCPcopy Create free account
hub / github.com/WebAssembly/wasm-c-api / vec

Class vec

include/wasm.hh:44–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42
43template<class T>
44class vec {
45 static const size_t invalid_size = SIZE_MAX;
46
47 size_t size_;
48 std::unique_ptr<T[]> data_;
49
50#ifdef WASM_API_DEBUG
51 WASM_API_EXTERN void make_data();
52 WASM_API_EXTERN void free_data();
53#else
54 void make_data() {}
55 void free_data() {}
56#endif
57
58 vec(size_t size) : vec(size, size ? new(std::nothrow) T[size] : nullptr) {
59 make_data();
60 }
61
62 vec(size_t size, T* data) : size_(size), data_(data) {
63 assert(!!size_ == !!data_ || size_ == invalid_size);
64 }
65
66public:
67 using elem_type = T;
68
69 vec(vec<T>&& that) : vec(that.size_, that.data_.release()) {
70 that.size_ = invalid_size;
71 }
72
73 ~vec() {
74 free_data();
75 }
76
77 operator bool() const {
78 return bool(size_ != invalid_size);
79 }
80
81 auto size() const -> size_t {
82 return size_;
83 }
84
85 auto get() const -> const T* {
86 return data_.get();
87 }
88
89 auto get() -> T* {
90 return data_.get();
91 }
92
93 auto release() -> T* {
94 size_ = invalid_size;
95 return data_.release();
96 }
97
98 void reset() {
99 free_data();
100 size_ = invalid_size;
101 data_.reset();

Callers 7

copyMethod · 0.85
deep_copyMethod · 0.85
make_uninitializedMethod · 0.85
makeMethod · 0.85
make_ntMethod · 0.85
adoptMethod · 0.85
invalidMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected