29 List(
const std::string &
id,
const std::string &
name);
34 const std::string &
name();
56 inline size_t *
sizePtr() {
return &m_size; }
65 inline size_t size()
const {
return m_size; }
68 inline bool empty()
const {
return m_size == 0; }
73 for (
size_t i = 0; i < m_size; i++) {
94 constexpr size_t limit = 200000;
97 if (m_dataPtr->size() > limit)
105 reserve(getAllocSize(m_size));
106 return m_dataPtr->operator[](m_size - 1);
118 assert(index >= 0 && index <
size());
119 std::rotate(m_dataPtr->begin() + index, m_dataPtr->begin() + index + 1, m_dataPtr->begin() + m_size);
126 assert(index >= 0 && index <=
size());
128 reserve(getAllocSize(m_size));
129 std::rotate(m_dataPtr->rbegin() + m_dataPtr->size() - m_size, m_dataPtr->rbegin() + m_dataPtr->size() - m_size + 1, m_dataPtr->rend() - index);
130 return m_dataPtr->operator[](index);
142 assert(index >= 0 && index <
size());
151 assert(index >= 0 && index <
size());
152 return m_dataPtr->operator[](index);
158 veque::veque<StringPtr *> strings;
160 strings.reserve(m_size);
164 for (i = 0; i < m_size; i++) {
165 const ValueData *item = &m_dataPtr->operator[](i);
168 strings.push_back(str);
169 size += strings.back()->size;
175 if (doubleNum != num) {
180 if (num < 0 || num >= 10) {
195 for (i = 0; i < strings.size(); i++) {
196 memcpy(dst->
data + dst->
size, strings[i]->data, strings[i]->size *
sizeof(
char16_t));
197 dst->
size += strings[i]->size;
201 for (; i < m_size; i++) {
211 size += strings.size() - 1;
214 for (i = 0; i < strings.size(); i++) {
215 memcpy(dst->
data + dst->
size, strings[i]->data, strings[i]->size *
sizeof(
char16_t));
216 dst->
size += strings[i]->size;
223 for (; i < m_size; i++) {
240 std::string toString()
const;
242 std::shared_ptr<List> clone();
245 inline void reserve(
size_t size)
247 assert(size >= m_size);
249 while (size > m_dataPtr->size()) {
254 while (size < m_dataPtr->size()) {
255 value_free(&m_dataPtr->back());
256 m_dataPtr->erase(m_dataPtr->end());
259 m_rawDataPtr = m_dataPtr->data();
262 inline size_t getAllocSize(
size_t x)
275 spimpl::unique_impl_ptr<ListPrivate> impl;
276 veque::veque<ValueData> *m_dataPtr =
nullptr;
277 ValueData *m_rawDataPtr =
nullptr;
Entity(const std::string &id)
Definition entity.cpp:10
size_t * sizePtr()
Definition list.h:56
void clear()
Definition list.h:91
void setName(const std::string &name)
Definition list.cpp:32
ValueData & operator[](size_t index)
Definition list.h:149
void toStringPtr(StringPtr *dst) const
Definition list.h:156
Target * target() const
Definition list.cpp:38
void removeAt(size_t index)
Definition list.h:116
const size_t * allocatedSizePtr() const
Definition list.h:62
ValueData & appendEmpty()
Definition list.h:102
List(const List &)=delete
void setTarget(Target *target)
Definition list.cpp:44
size_t size() const
Definition list.h:65
bool contains(const Value &value) const
Definition list.h:88
void append(const ValueData &value)
Definition list.h:110
bool empty() const
Definition list.h:68
void append(const Value &value)
Definition list.h:113
List(const std::string &id, const std::string &name)
Definition list.cpp:11
void setMonitor(Monitor *monitor)
Definition list.cpp:56
void insert(size_t index, const ValueData &value)
Definition list.h:134
size_t indexOf(const Value &value) const
Definition list.h:82
ValueData * data() const
Definition list.h:44
void insert(size_t index, const Value &value)
Definition list.h:137
ValueData & insertEmpty(size_t index)
Definition list.h:124
ValueData *const * dataPtr() const
Definition list.h:50
const std::string & name()
Definition list.cpp:26
bool contains(const ValueData &value) const
Definition list.h:85
void replace(size_t index, const Value &value)
Definition list.h:147
size_t indexOf(const ValueData &value) const
Definition list.h:71
Monitor * monitor() const
Definition list.cpp:50
void replace(size_t index, const ValueData &value)
Definition list.h:140
The Monitor class represents a stage monitor.
Definition monitor.h:23
The Target class is the Stage or a Sprite.
Definition target.h:28
The Value class represents a Scratch value.
Definition value.h:22
const ValueData & data() const
Definition value.h:86
#define LIBSCRATCHCPP_EXPORT
Definition global.h:17
The main namespace of the library.
Definition asset.h:10
void value_assign_copy(ValueData *v, const ValueData *another)
Definition value_functions.cpp:94
double value_toDouble(const ValueData *v)
Definition value_functions.cpp:253
bool value_isValidNumber(const ValueData *v)
Definition value_functions.cpp:166
void value_init(ValueData *v)
Definition value_functions.cpp:30
void value_toStringPtr(const ValueData *v, StringPtr *dst)
Definition value_functions.cpp:291
LIBSCRATCHCPP_EXPORT void string_pool_free(StringPtr *str)
Definition string_pool.cpp:44
LIBSCRATCHCPP_EXPORT void string_alloc(StringPtr *str, size_t size)
Definition string_functions.cpp:19
bool value_isBool(const ValueData *v)
Definition value_functions.cpp:213
LIBSCRATCHCPP_EXPORT StringPtr * string_pool_new()
Definition string_pool.cpp:24
long value_toLong(const ValueData *v)
Definition value_functions.cpp:227
bool value_equals(const ValueData *v1, const ValueData *v2)
Definition value_functions.cpp:536
The StringPtr struct holds a string data pointer and string size.
Definition stringptr.h:14
char16_t * data
Definition stringptr.h:27
size_t size
Definition stringptr.h:28
The ValueData struct holds the data of Value. It's used in compiled Scratch code for better performan...
Definition valuedata.h:26