MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / vec

Class vec

crates/c-api/include/wasm.hh:50–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 11

stratMethod · 0.85
stratMethod · 0.85
copyMethod · 0.85
deep_copyMethod · 0.85
make_uninitializedMethod · 0.85
makeMethod · 0.85
make_ntMethod · 0.85
adoptMethod · 0.85
invalidMethod · 0.85
mutate_struct_fieldsMethod · 0.85
mutateMethod · 0.85

Calls

no outgoing calls

Tested by 2

stratMethod · 0.68
stratMethod · 0.68