C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
exprtk::details::vec_data_store< T > Class Template Reference

#include <exprtk.hpp>

Collaboration diagram for exprtk::details::vec_data_store< T >:
[legend]

Classes

struct  control_block

Public Types

typedef vec_data_store< T > type
typedef T * data_t

Public Member Functions

 vec_data_store ()
 vec_data_store (const std::size_t &size)
 vec_data_store (const std::size_t &size, data_t data, bool dstrct=false)
 vec_data_store (const type &vds)
 ~vec_data_store ()
type & operator= (const type &vds)
data_t data ()
data_t data () const
std::size_t size () const
data_t & ref ()
void dump () const

Static Public Member Functions

static void match_sizes (type &vds0, type &vds1)

Static Private Member Functions

static std::size_t min_size (const control_block *cb0, const control_block *cb1)

Private Attributes

control_block * control_block_

Detailed Description

template<typename T>
class exprtk::details::vec_data_store< T >

Definition at line 5319 of file exprtk.hpp.

Member Typedef Documentation

◆ data_t

template<typename T>
typedef T* exprtk::details::vec_data_store< T >::data_t

Definition at line 5324 of file exprtk.hpp.

◆ type

template<typename T>
typedef vec_data_store<T> exprtk::details::vec_data_store< T >::type

Definition at line 5323 of file exprtk.hpp.

Constructor & Destructor Documentation

◆ vec_data_store() [1/4]

template<typename T>
exprtk::details::vec_data_store< T >::vec_data_store ( )
inline

Definition at line 5411 of file exprtk.hpp.

5413 {}
static control_block * create(const std::size_t &dsize, data_t data_ptr=data_t(0), bool dstrct=false)
Definition exprtk.hpp:5361

◆ vec_data_store() [2/4]

template<typename T>
exprtk::details::vec_data_store< T >::vec_data_store ( const std::size_t & size)
inlineexplicit

Definition at line 5415 of file exprtk.hpp.

5416 : control_block_(control_block::create(size,reinterpret_cast<data_t>(0),true))
5417 {}
std::size_t size() const
Definition exprtk.hpp:5465

◆ vec_data_store() [3/4]

template<typename T>
exprtk::details::vec_data_store< T >::vec_data_store ( const std::size_t & size,
data_t data,
bool dstrct = false )
inline

◆ vec_data_store() [4/4]

template<typename T>
exprtk::details::vec_data_store< T >::vec_data_store ( const type & vds)
inline

Definition at line 5423 of file exprtk.hpp.

5424 {
5426 control_block_->ref_count++;
5427 }

◆ ~vec_data_store()

template<typename T>
exprtk::details::vec_data_store< T >::~vec_data_store ( )
inline

Definition at line 5429 of file exprtk.hpp.

5430 {
5432 }
static void destroy(control_block *&cntrl_blck)
Definition exprtk.hpp:5374

Member Function Documentation

◆ data() [1/2]

◆ data() [2/2]

template<typename T>
data_t exprtk::details::vec_data_store< T >::data ( ) const
inline

Definition at line 5460 of file exprtk.hpp.

5461 {
5462 return control_block_->data;
5463 }

◆ dump()

template<typename T>
void exprtk::details::vec_data_store< T >::dump ( ) const
inline

Definition at line 5475 of file exprtk.hpp.

5476 {
5477 #ifdef exprtk_enable_debugging
5478 exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n",
5479 size(),
5480 data(),
5481 (control_block_->destruct ? 'T' : 'F')));
5482
5483 for (std::size_t i = 0; i < size(); ++i)
5484 {
5485 if (5 == i)
5486 exprtk_debug(("\n"));
5487
5488 exprtk_debug(("%15.10f ", data()[i]));
5489 }
5490 exprtk_debug(("\n"));
5491 #endif
5492 }
#define exprtk_debug(params)
Definition exprtk.hpp:64

◆ match_sizes()

template<typename T>
void exprtk::details::vec_data_store< T >::match_sizes ( type & vds0,
type & vds1 )
inlinestatic

Definition at line 5494 of file exprtk.hpp.

5495 {
5499 }
static std::size_t min_size(const control_block *cb0, const control_block *cb1)
Definition exprtk.hpp:5503

Referenced by exprtk::details::assignment_vecvec_node< T >::assignment_vecvec_node(), and exprtk::details::assignment_vecvec_op_node< T, Operation >::assignment_vecvec_op_node().

Here is the caller graph for this function:

◆ min_size()

template<typename T>
std::size_t exprtk::details::vec_data_store< T >::min_size ( const control_block * cb0,
const control_block * cb1 )
inlinestaticprivate

Definition at line 5503 of file exprtk.hpp.

5504 {
5505 const std::size_t size0 = cb0->size;
5506 const std::size_t size1 = cb1->size;
5507
5508 if (size0 && size1)
5509 return std::min(size0,size1);
5510 else
5511 return (size0) ? size0 : size1;
5512 }

Referenced by exprtk::details::vec_data_store< Type >::match_sizes(), and exprtk::details::vec_data_store< Type >::operator=().

Here is the caller graph for this function:

◆ operator=()

template<typename T>
type & exprtk::details::vec_data_store< T >::operator= ( const type & vds)
inline

Definition at line 5434 of file exprtk.hpp.

5435 {
5436 if (this != &vds)
5437 {
5439
5441 control_block_->size = final_size;
5442
5443 if (control_block_->destruct || (0 == control_block_->data))
5444 {
5446
5448 control_block_->ref_count++;
5449 }
5450 }
5451
5452 return (*this);
5453 }

◆ ref()

template<typename T>
data_t & exprtk::details::vec_data_store< T >::ref ( )
inline

Definition at line 5470 of file exprtk.hpp.

5471 {
5472 return control_block_->data;
5473 }

◆ size()

template<typename T>
std::size_t exprtk::details::vec_data_store< T >::size ( ) const
inline

Definition at line 5465 of file exprtk.hpp.

5466 {
5467 return control_block_->size;
5468 }

Referenced by exprtk::details::vec_data_store< Type >::dump(), and exprtk::details::assignment_vec_node< T >::valid().

Here is the caller graph for this function:

Member Data Documentation

◆ control_block_


The documentation for this class was generated from the following file: