26 template <
typename... Args>
29 template <
typename Th,
typename... Tl>
30 struct Impl<Th, Tl...>
32 static std::list<size_t> _create()
34 auto tmp = Impl<Tl...>::_create();
35 tmp.push_front(
sizeof(Th));
43 static std::list<size_t> _create()
45 return std::list<size_t>();
53 template <
typename... Args>
56 template <
typename Th,
typename... Tl>
57 struct lmake<Th, Tl...>
59 static void _create(std::list<void**>& ival, Th* restr * hval, Tl* restr *... lvals)
61 ival.push_back((
void**)hval);
62 lmake<Tl...>::_create(ival, lvals...);
69 static void _create(std::list<void**>& ival){}
81 static void _create(
size_t al,
char* v,
char* en,
82 std::list<size_t> sizes, std::list<size_t>
vsizes, std::list<char* >& ptrl);
91 void make_this(
size_t mal,
size_t dim, Tl* restr *... args);
104 template<
class ...Tl>
105 void create(
size_t dim, Tl* restr *... args){
116 template<
class ...Tl>
117 void create(
size_t mal,
size_t dim, Tl* restr *... args){
124 template<
class ...Tl>
125 void add(
size_t mal,
size_t dim, Tl* restr * ... args);
126 template<
class ...Tl>
127 void add(
size_t dim, Tl* restr * ... args){
128 add(32, dim, args...);
137 void set_dim(
size_t num,
size_t mal=32);
152 template<
class ...Tl>
160 std::list<char*> held_ptrs;
174 catch(std::exception& e){
175 std::cout <<
"Needs more memory" << std::endl;
182 auto h = held_ptrs.begin();
183 auto c =
cptrs.begin();
184 for(;
h != held_ptrs.end() && c !=
cptrs.end();){
202 template<
class ...Tl>
207 size_t new_bytes = (val.size() +1)*mal;
208 std::list<char*> held_ptrs;
212 new_bytes += dim * s;
227 catch(std::exception& e){
234 auto h = held_ptrs.begin();
235 auto c =
cptrs.begin();
236 for(;
h != held_ptrs.end() && c !=
cptrs.end();){