44 return M2_tostringn(
const_cast<char*
>(
s.data()),
static_cast<int>(
s.size()));
49 return std::string((
char*)
s->array,
s->len);
53 std::vector<std::string>&
result)
56 for (
auto i = 0; i < strs->len; i++)
62 std::vector<std::string>
result;
68 const std::vector<std::string>& strs)
71 auto len =
static_cast<int>(strs.size());
73 for (
auto i = 0; i < len; i++) a->array[i] =
M2_tostring(strs[i].c_str());
82 for (
auto i = 0; i < v.size(); i++)
result->array[i] =
static_cast<int>(v[i]);
91 for (
auto i = 0; i < v.size(); i++)
result->array[i] =
static_cast<int>(v[i]);
100 for (
auto i = 0; i < arr->len; i++)
result.emplace_back(arr->array[i]);
105inline std::ostream&
operator<<(std::ostream& o,
const std::vector<T>& ts)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemarraytype(S, len)
Engine-wide GC allocator surface (getmem / getmem_atomic) and debug-allocation trap.
M2_string M2_tostringn(char *s, int n)
M2_string M2_tostring(const char *s)
M2_arrayint M2_makearrayint(int n)
Engine-to-interpreter type vocabulary across the C++ / .dd boundary.
typename std::vector< T, gc_allocator< T > > gc_vector
a version of the STL vector, which allocates its backing memory with gc.
M2_string string_std_to_M2(const std::string &s)
M2_arrayint stdvector_to_M2_arrayint(const std::vector< T > &v)
std::ostream & operator<<(std::ostream &o, const std::vector< T > &ts)
void M2_ArrayString_to_stdvector(M2_ArrayString strs, std::vector< std::string > &result)
std::string string_M2_to_std(const M2_string s)
M2_ArrayString stdvector_to_M2_ArrayString(const std::vector< std::string > &strs)
std::vector< T > M2_arrayint_to_stdvector(M2_arrayint arr)