cppyabm  1.0.17
An agent-based library to integrate C++ and Python
Classes | Typedefs | Functions
stl_bind.h File Reference
#include "detail/common.h"
#include "operators.h"
#include <algorithm>
#include <sstream>

Go to the source code of this file.

Classes

struct  container_traits< T >
 
struct  is_comparable< T, SFINAE >
 
struct  is_comparable< T, enable_if_t< container_traits< T >::is_element &&container_traits< T >::is_comparable > >
 
struct  is_comparable< T, enable_if_t< container_traits< T >::is_vector > >
 
struct  is_comparable< T, enable_if_t< container_traits< T >::is_pair > >
 
struct  vector_has_data_and_format< Vector, typename >
 
struct  vector_has_data_and_format< Vector, enable_if_t< std::is_same< decltype(format_descriptor< typename Vector::value_type >::format(), std::declval< Vector >().data()), typename Vector::value_type * >::value > >
 

Typedefs

template<typename Vector >
using vector_needs_copy = negation< std::is_same< decltype(std::declval< Vector >()[typename Vector::size_type()]), typename Vector::value_type & > >
 

Functions

template<typename , typename , typename... Args>
void vector_if_copy_constructible (const Args &...)
 
template<typename , typename , typename... Args>
void vector_if_equal_operator (const Args &...)
 
template<typename , typename , typename... Args>
void vector_if_insertion_operator (const Args &...)
 
template<typename , typename , typename... Args>
void vector_modifiers (const Args &...)
 
template<typename Vector , typename Class_ >
void vector_if_copy_constructible (enable_if_t< is_copy_constructible< Vector >::value, Class_ > &cl)
 
template<typename Vector , typename Class_ >
void vector_if_equal_operator (enable_if_t< is_comparable< Vector >::value, Class_ > &cl)
 
template<typename Vector , typename Class_ >
void vector_modifiers (enable_if_t< is_copy_constructible< typename Vector::value_type >::value, Class_ > &cl)
 
template<typename Vector , typename Class_ >
void vector_accessor (enable_if_t<!vector_needs_copy< Vector >::value, Class_ > &cl)
 
template<typename Vector , typename Class_ >
void vector_accessor (enable_if_t< vector_needs_copy< Vector >::value, Class_ > &cl)
 
template<typename Vector , typename Class_ >
auto vector_if_insertion_operator (Class_ &cl, std::string const &name) -> decltype(std::declval< std::ostream & >()<< std::declval< typename Vector::value_type >(), void())
 
template<typename... Args>
constexpr bool args_any_are_buffer ()
 
template<typename Vector , typename Class_ , typename... Args>
void vector_buffer_impl (Class_ &cl, std::true_type)
 
template<typename Vector , typename Class_ , typename... Args>
void vector_buffer_impl (Class_ &, std::false_type)
 
template<typename Vector , typename Class_ , typename... Args>
void vector_buffer (Class_ &cl)
 
template<typename Vector , typename holder_type = std::unique_ptr<Vector>, typename... Args>
class_< Vector, holder_type > bind_vector (handle scope, std::string const &name, Args &&... args)
 
template<typename , typename , typename... Args>
void map_if_insertion_operator (const Args &...)
 
template<typename , typename , typename... Args>
void map_assignment (const Args &...)
 
template<typename Map , typename Class_ >
void map_assignment (enable_if_t< is_copy_assignable< typename Map::mapped_type >::value, Class_ > &cl)
 
template<typename Map , typename Class_ >
void map_assignment (enable_if_t< !is_copy_assignable< typename Map::mapped_type >::value &&is_copy_constructible< typename Map::mapped_type >::value, Class_ > &cl)
 
template<typename Map , typename Class_ >
auto map_if_insertion_operator (Class_ &cl, std::string const &name) -> decltype(std::declval< std::ostream & >()<< std::declval< typename Map::key_type >()<< std::declval< typename Map::mapped_type >(), void())
 
template<typename Map , typename holder_type = std::unique_ptr<Map>, typename... Args>
class_< Map, holder_type > bind_map (handle scope, const std::string &name, Args &&... args)
 

Typedef Documentation

◆ vector_needs_copy

template<typename Vector >
using vector_needs_copy = negation< std::is_same<decltype(std::declval<Vector>()[typename Vector::size_type()]), typename Vector::value_type &> >

Definition at line 287 of file stl_bind.h.

Function Documentation

◆ args_any_are_buffer()

template<typename... Args>
constexpr bool args_any_are_buffer ( )
constexpr

Definition at line 382 of file stl_bind.h.

◆ bind_map()

template<typename Map , typename holder_type = std::unique_ptr<Map>, typename... Args>
class_<Map, holder_type> bind_map ( handle  scope,
const std::string &  name,
Args &&...  args 
)

Definition at line 603 of file stl_bind.h.

◆ bind_vector()

template<typename Vector , typename holder_type = std::unique_ptr<Vector>, typename... Args>
class_<Vector, holder_type> bind_vector ( handle  scope,
std::string const &  name,
Args &&...  args 
)

Definition at line 442 of file stl_bind.h.

◆ map_assignment() [1/3]

template<typename , typename , typename... Args>
void map_assignment ( const Args &  ...)

Definition at line 538 of file stl_bind.h.

◆ map_assignment() [2/3]

template<typename Map , typename Class_ >
void map_assignment ( enable_if_t< !is_copy_assignable< typename Map::mapped_type >::value &&is_copy_constructible< typename Map::mapped_type >::value, Class_ > &  cl)

Definition at line 557 of file stl_bind.h.

◆ map_assignment() [3/3]

template<typename Map , typename Class_ >
void map_assignment ( enable_if_t< is_copy_assignable< typename Map::mapped_type >::value, Class_ > &  cl)

Definition at line 542 of file stl_bind.h.

◆ map_if_insertion_operator() [1/2]

template<typename Map , typename Class_ >
auto map_if_insertion_operator ( Class_ &  cl,
std::string const &  name 
) -> decltype(std::declval<std::ostream&>() << std::declval<typename Map::key_type>() << std::declval<typename Map::mapped_type>(), void())

Definition at line 578 of file stl_bind.h.

◆ map_if_insertion_operator() [2/2]

template<typename , typename , typename... Args>
void map_if_insertion_operator ( const Args &  ...)

Definition at line 537 of file stl_bind.h.

◆ vector_accessor() [1/2]

template<typename Vector , typename Class_ >
void vector_accessor ( enable_if_t< vector_needs_copy< Vector >::value, Class_ > &  cl)

Definition at line 326 of file stl_bind.h.

◆ vector_accessor() [2/2]

template<typename Vector , typename Class_ >
void vector_accessor ( enable_if_t<!vector_needs_copy< Vector >::value, Class_ > &  cl)

Definition at line 292 of file stl_bind.h.

◆ vector_buffer()

template<typename Vector , typename Class_ , typename... Args>
void vector_buffer ( Class_ &  cl)

Definition at line 432 of file stl_bind.h.

◆ vector_buffer_impl() [1/2]

template<typename Vector , typename Class_ , typename... Args>
void vector_buffer_impl ( Class_ &  ,
std::false_type   
)

Definition at line 429 of file stl_bind.h.

◆ vector_buffer_impl() [2/2]

template<typename Vector , typename Class_ , typename... Args>
void vector_buffer_impl ( Class_ &  cl,
std::true_type   
)

Definition at line 391 of file stl_bind.h.

◆ vector_if_copy_constructible() [1/2]

template<typename , typename , typename... Args>
void vector_if_copy_constructible ( const Args &  ...)

Definition at line 63 of file stl_bind.h.

◆ vector_if_copy_constructible() [2/2]

template<typename Vector , typename Class_ >
void vector_if_copy_constructible ( enable_if_t< is_copy_constructible< Vector >::value, Class_ > &  cl)

Definition at line 69 of file stl_bind.h.

◆ vector_if_equal_operator() [1/2]

template<typename , typename , typename... Args>
void vector_if_equal_operator ( const Args &  ...)

Definition at line 64 of file stl_bind.h.

◆ vector_if_equal_operator() [2/2]

template<typename Vector , typename Class_ >
void vector_if_equal_operator ( enable_if_t< is_comparable< Vector >::value, Class_ > &  cl)

Definition at line 74 of file stl_bind.h.

◆ vector_if_insertion_operator() [1/2]

template<typename Vector , typename Class_ >
auto vector_if_insertion_operator ( Class_ &  cl,
std::string const &  name 
) -> decltype(std::declval<std::ostream&>() << std::declval<typename Vector::value_type>(), void())

Definition at line 351 of file stl_bind.h.

◆ vector_if_insertion_operator() [2/2]

template<typename , typename , typename... Args>
void vector_if_insertion_operator ( const Args &  ...)

Definition at line 65 of file stl_bind.h.

◆ vector_modifiers() [1/2]

template<typename , typename , typename... Args>
void vector_modifiers ( const Args &  ...)

Definition at line 66 of file stl_bind.h.

◆ vector_modifiers() [2/2]

template<typename Vector , typename Class_ >
void vector_modifiers ( enable_if_t< is_copy_constructible< typename Vector::value_type >::value, Class_ > &  cl)

Slicing protocol

Definition at line 113 of file stl_bind.h.