List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions
casadi::SharedSXElem Class Reference

#include <output_sx.hpp>

Detailed Description

Definition at line 38 of file output_sx.hpp.

Inheritance diagram for casadi::SharedSXElem:
Inheritance graph
[legend]
Collaboration diagram for casadi::SharedSXElem:
Collaboration graph
[legend]

Public Types

using internal_base_type = OutputSX
 
using base_type = SharedSXElem
 

Public Member Functions

void own (OutputSX *node)
 
void assign (OutputSX *node)
 Assign the node to a node class pointer without reference counting. More...
 
OutputSXget () const
 Get a const pointer to the node. More...
 
casadi_int getCount () const
 Get the reference count. More...
 
void swap (GenericShared &other)
 Swap content with another instance. More...
 
OutputSXoperator-> () const
 Access a member function or object. More...
 
std::string debug_repr () const
 
bool is_null () const
 Is a null pointer? More...
 
casadi_int __hash__ () const
 Returns a number that is unique for a given Node. More...
 
GenericWeakRef< SharedSXElem, OutputSX > * weak ()
 Get a weak reference to the object. More...
 

Static Public Member Functions

static bool test_cast (const OutputSX *ptr)
 

Protected Member Functions

void count_up ()
 
void count_down ()
 

Member Typedef Documentation

◆ base_type

Definition at line 47 of file output_sx.hpp.

◆ internal_base_type

Definition at line 46 of file output_sx.hpp.

Member Function Documentation

◆ __hash__()

casadi_int casadi::GenericShared< SharedSXElem , OutputSX >::__hash__
inherited

If the Object does not point to any node, "0" is returned.

Extra doc: https://github.com/casadi/casadi/wiki/L_av

Definition at line 123 of file generic_shared_impl.hpp.

141  {
142  return reinterpret_cast<casadi_int>(get());
143  }

◆ assign()

void casadi::GenericShared< SharedSXElem , OutputSX >::assign ( OutputSX node)
inherited

improper use will cause memory leaks!

Extra doc: https://github.com/casadi/casadi/wiki/L_at

Definition at line 96 of file generic_shared_impl.hpp.

79  {
80  node = node_;
81  }

◆ count_down()

void casadi::GenericShared< SharedSXElem , OutputSX >::count_down
protectedinherited

Definition at line 133 of file generic_shared_impl.hpp.

46  {
47 #ifdef WITH_EXTRA_CHECKS
48  casadi_assert_dev(Function::call_depth_==0);
49 #endif // WITH_EXTRA_CHECKS
50  if (!node) return;
51  if (node->weak_ref_) {
52 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
53  auto mutex = node->weak_ref_->get_mutex();
54  // Avoid triggering a delete while a weak_ref.shared_if_alive is being called
55  std::lock_guard<std::mutex> lock(*mutex);
56  // Could it be that this mutex is destroyed when the lock goes out of scope?
57 #endif // CASADI_WITH_THREADSAFE_SYMBOLICS
58 
59  if (--static_cast<Internal*>(node)->count == 0) {
60  delete node;
61  node = nullptr;
62  }
63  } else {
64  if (--static_cast<Internal*>(node)->count == 0) {
65  delete node;
66  node = nullptr;
67  }
68  }
69  }

◆ count_up()

void casadi::GenericShared< SharedSXElem , OutputSX >::count_up
protectedinherited

Definition at line 132 of file generic_shared_impl.hpp.

36  {
37 #ifdef WITH_EXTRA_CHECKS
38  casadi_assert_dev(Function::call_depth_==0);
39 #endif // WITH_EXTRA_CHECKS
40 
41  if (node) static_cast<Internal*>(node)->count++;
42 
43  }

◆ debug_repr()

std::string casadi::GenericShared< SharedSXElem , OutputSX >::debug_repr
inherited

Definition at line 112 of file generic_shared_impl.hpp.

84  {
85  if (node) {
86  return node->debug_repr(node);
87  } else {
88  return "NULL";
89  }
90  }
std::string debug_repr(const Internal *) const

◆ get()

Definition at line 99 of file generic_shared_impl.hpp.

108  {
109  return node;
110  }

◆ getCount()

casadi_int casadi::GenericShared< SharedSXElem , OutputSX >::getCount
inherited

Definition at line 102 of file generic_shared_impl.hpp.

131  {
132  return (*this)->getCount();
133  }

◆ is_null()

bool casadi::GenericShared< SharedSXElem , OutputSX >::is_null
inherited

Definition at line 116 of file generic_shared_impl.hpp.

113  {
114  return node==nullptr;
115  }

◆ operator->()

OutputSX * casadi::GenericShared< SharedSXElem , OutputSX >::operator->
inherited

Definition at line 108 of file generic_shared_impl.hpp.

118  {
119  casadi_assert_dev(!is_null());
120  return node;
121  }

◆ own()

void casadi::GenericShared< SharedSXElem , OutputSX >::own ( OutputSX node)
inherited

Assign the node to a node class pointer (or null)

Definition at line 89 of file generic_shared_impl.hpp.

◆ swap()

void casadi::GenericShared< SharedSXElem , OutputSX >::swap ( GenericShared< SharedSXElem, OutputSX > &  other)
inherited

Definition at line 105 of file generic_shared_impl.hpp.

124  {
125  GenericShared<Shared, Internal> temp = *this;
126  *this = other;
127  other = temp;
128  }

◆ test_cast()

static bool casadi::SharedSXElem::test_cast ( const OutputSX ptr)
inlinestatic

Definition at line 42 of file output_sx.hpp.

42  {
43  return ptr;
44  }

◆ weak()

Extra doc: https://github.com/casadi/casadi/wiki/L_aw

Definition at line 130 of file generic_shared_impl.hpp.

136  {
137  return (*this)->weak();
138  }

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