MCPcopy Create free account
hub / github.com/ArashPartow/exprtk / vv_size_handler_t

Class vv_size_handler_t

exprtk_test.cpp:10331–10380  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10329
10330template <typename T>
10331class vv_size_handler_t : public exprtk::igeneric_function<T>
10332{
10333public:
10334
10335 typedef typename exprtk::igeneric_function<T> igfun_t;
10336 typedef typename igfun_t::parameter_list_t parameter_list_t;
10337 typedef typename igfun_t::generic_type generic_type;
10338 typedef typename generic_type::vector_view vector_t;
10339 typedef typename generic_type::scalar_view scalar_t;
10340 typedef exprtk::vector_view<T>* vv_ptr_t;
10341 typedef std::map<void*,vv_ptr_t> map_t;
10342
10343 using exprtk::igeneric_function<T>::operator();
10344
10345 vv_size_handler_t()
10346 : exprtk::igeneric_function<T>("VT")
10347 {}
10348
10349 inline T operator()(parameter_list_t parameters)
10350 {
10351 vector_t vector(parameters[0]);
10352 size_t new_size = static_cast<std::size_t>(scalar_t(parameters[1])());
10353 void* key = static_cast<void*>(&vector[0]);
10354
10355 typename map_t::iterator itr = vector_map_.find(key);
10356
10357 if (itr == vector_map_.end())
10358 {
10359 return T(0);
10360 }
10361
10362 exprtk::vector_view<T>& vv = *itr->second;
10363
10364 if (vv.base_size() < new_size)
10365 {
10366 return T(0);
10367 }
10368
10369 return vv.set_size(new_size) ? T(1) : T(0);
10370 }
10371
10372 void register_vector_view(exprtk::vector_view<T>& vec_view)
10373 {
10374 vector_map_[vec_view.data()] = &vec_view;
10375 }
10376
10377private:
10378
10379 map_t vector_map_;
10380};
10381
10382
10383template <typename T>

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected