List of all members | Public Member Functions
casadi::SharedObject Class Reference

SharedObject implements a reference counting framework similar for efficient and. More...

#include <shared_object.hpp>

Detailed Description

easily-maintained memory management.

To use the class, both the SharedObject class (the public class), and the SharedObjectInternal class (the internal class) must be inherited from. It can be done in two different files and together with memory management, this approach provides a clear distinction of which methods of the class are to be considered "public", i.e. methods for public use that can be considered to remain over time with small changes, and the internal memory.

When interfacing a software, which typically includes including some header file, this is best done only in the file where the internal class is defined, to avoid polluting the global namespace and other side effects.

The default constructor always means creating a null pointer to an internal class only. To allocate an internal class (this works only when the internal class isn't abstract), use the constructor with arguments.

The copy constructor and the assignment operator perform shallow copies only, to make a deep copy you must use the clone method explicitly. This will give a shared pointer instance.

In an inheritance hierarchy, you can cast down automatically, e.g. (SXFunction is a child class of Function): SXFunction derived(...); Function base = derived;

To cast up, use the shared_cast template function, which works analogously to dynamic_cast, static_cast, const_cast etc, e.g.: SXFunction derived(...); Function base = derived; SXFunction derived_from_base = shared_cast<SXFunction>(base);

A failed shared_cast will result in a null pointer (cf. dynamic_cast)

Author
Joel Andersson
Date
2010

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

Definition at line 84 of file shared_object.hpp.

Inheritance diagram for casadi::SharedObject:
Inheritance graph
[legend]

Public Member Functions

std::string class_name () const
 Get class name. More...
 
void disp (std::ostream &stream, bool more=false) const
 Print a description of the object. More...
 
std::string get_str (bool more=false) const
 Get string representation. More...
 
bool is_null () const
 Is a null pointer? More...
 
casadi_int __hash__ () const
 Returns a number that is unique for a given Node. More...
 

Member Function Documentation

◆ __hash__()

casadi_int casadi::SharedObject::__hash__ ( ) const

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

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

◆ class_name()

std::string casadi::SharedObject::class_name ( ) const

◆ disp()

void casadi::SharedObject::disp ( std::ostream &  stream,
bool  more = false 
) const

◆ get_str()

std::string casadi::SharedObject::get_str ( bool  more = false) const
inline

Definition at line 138 of file shared_object.hpp.

◆ is_null()

bool casadi::SharedObject::is_null ( ) const

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