Nano
A C++ template metaprogramming library
|
Cnano::detail::accumulate< List, Iteration, StartIndex, EndIndex, Value, Operation > | Like std::accumulate, where the start and end indices, and the accumulation functor can be specified |
Cnano::detail::accumulate< list< Head, Tail...>, Iteration, StartIndex, EndIndex, Value, Operation > | |
Cnano::detail::accumulate< list< Tail...>, Iteration, StartIndex, EndIndex, Value, Operation > | |
Cnano::add< Arg1, Arg2 > | Addss two nano numeric types |
Cnano::args_list< Args > | A list of arguments |
Cnano::detail::array_convert< Element > | Converts an element to a std type, like nano::int_t to inr or a nano::list into a std::array with N elements |
Cnano::detail::array_convert< list< First, Rest...> > | |
Cnano::both_found< Type1, Type2 > | Checks if both types are found (have values != -1), in which case result is true, otherwise result is false |
Cnano::detail::build_range< Current, Step, Iteration, Continue, Values > | Builds a range of nano::int_t types |
Cnano::detail::build_range< Current, Step, Iteration, false, list< nano::int_t< Values >...> > | |
Cnano::detail::build_range< Current, Step, Iteration, true, list< nano::int_t< Values >...> > | |
Cnano::equal_value< Type1, Type2 > | Check if two types (which have value components) have the same value |
Cnano::eval< Expression, Arg > | Evaluates an expression with arguments |
Cnano::eval< Expression, no_args > | |
Cnano::eval< Function< Args...>, no_args > | |
Cnano::expand< Expression, Arg, Expandable > | Expands a list into its types |
Cnano::expand< Expression, Arg, false > | |
Cnano::expand< Expression, Arg, true > | |
Cnano::filter< Evaluator, List1, List2, Passed > | Takes a list and an evaluation function, which itself takes the list and a parameter to evaluate if each element of the list must be filtered |
Cnano::filter< Evaluator, empty_list, list< Tail2...>, list< Passed...> > | |
Cnano::filter< Evaluator, list< Head1, Tail1...>, list< Head2, Tail2...>, list< Passed...> > | |
Cnano::find_common< List1, List2 > | Finds all common elements in 2 lists and returns a zipped list of the result, where each zipped element is a index of the common element in the lists. The zips are sorted by the index of the element in the first list. For example, if there are 2 lists: [ 0, 4, 2, 1 ] and [ 12, 1, 4, 2 ] the returned list will be: [ [1, 2], [2 ,3], [1, 2] ] |
Cnano::find_common< list< Head1, Tail1...>, list< Head2, Tail2...> > | |
Cnano::find_type< Type, List > | Find the index of a specific type in the list (the index of the first occurrence). If the type is not found then the value 'parameter' will be -1 |
Cnano::find_type< Type, list< Head, Tail...> > | |
Cnano::find_type< Type, list< Type, Tail...> > | |
Cnano::find_type< Type, list<> > | |
Cnano::find_uncommon< List1, List2 > | Finds all elements of the first list which are not present in the second list, and returns a new list without the common elements. For example, if there are 2 lists: [ 2, 3, 1, 4 ] and [ 4, 5, 2 ] the returned list will be: [ 3, 1 ] |
Cnano::find_uncommon< list< Head1, Tail1...>, list< Head2, Tail2...> > | |
Cnano::find_uncommon_indices< List1, List2 > | Finds the indices of the elements in the first list which are not present in the second list and returns a list of the index values. For example, if there are 2 lists: [ 2, 3, 1, 4 ] and [ 4, 5, 2 ] the returned list will be: [ 1, 3 ] |
Cnano::find_uncommon_indices< list< Head1, Tail1...>, list< Head2, Tail2...> > | |
Cnano::first_not_present< Type, List > | Just check if the first element of the list was found (searching should be done beforehand) |
Cnano::first_not_present< Type, list< Head, Tail...> > | |
Cnano::detail::get< Index, List > | Meta function to get an element from a list |
▼Cnano::detail::get< nano::size_t< Index-1 >, list< Tail...> > | |
Cnano::detail::get< nano::size_t< Index >, list< Head, Tail...> > | |
Cnano::identify< Type > | Simply an identifier to identify meta types and meta functions |
▼Cnano::identify< Head > | |
Cnano::detail::get< nano::size_t< 0 >, list< Head, Tail...> > | |
▼Cnano::identify< list< Ts..., Us...> > | |
Cnano::join< list< Ts...>, list< Us...> > | |
Cnano::int_t< Value > | Wrapper around int for static int types used by metaclass and metafunctions in nano |
Cnano::is_found< Type1, Type2 > | Ths function is supposed to be used with the find functions on lists when searching through the list to find common or uncommon elements. It should be called by the zip HOF to determine if Type1 and Type2 should be zipped and added to the list of elements to return. Please see the implementation of the find_common and zip functions for clarificaiton |
Cnano::join< List1, List2 > | Joins two lists |
Cnano::list< Ts > | Meta class that holds types, and allows functions to be applied to the elements of the list using the internal apply struct. Usage: using nano::dim; \ To get dimension types using test_list = list<i, j, k, l>; \ A list of dimensions using shifted_list = list::apply<shift>; Where shift is some function which operates on a type in the list |
Cnano::multiplies< List, Current > | Same as std::multiplies, but for a nano:list which can be computed at compile time - computes the product of the list elelents from the starting value |
Cnano::multiplies< empty_list, Current > | |
Cnano::multiplies< list< Head, Tail...>, Current > | |
Cnano::multiply< Arg1, Arg2 > | Multiplies two nano numeric types |
Cnano::not_found< Type > | Function to determine if and element is not found (has a value of -1) |
Cnano::pair< First, Second > | Holds two elements |
Cnano::range< Start, End, Step > | Constructs a range of nano::int_t t types, which is essentially just a list of nano::int_t types |
Cnano::runtime_converter< List > | Wrapper class to provide the conversion functions for converting to runtime containers |
Cnano::runtime_converter< list< Head, Tail...> > | |
Cnano::detail::search_lists< List1, List2 > | For each element in the first list, the index of the element in the second list is searched for, if found it's added to a new list, otherwise -1 is added |
Cnano::detail::search_lists< list< Head1, Tail1...>, list< Head2, Tail2...> > | |
Cnano::size_of< Container, Types > | Gets the number of types in a container |
Cnano::size_of< Container< Types...> > | |
Cnano::size_t< Value > | Wrapper around size_t for static size_t types used by metaclass and metafunctions in nano |
Cnano::type_not_present< Type, List > | To check if a type in a list is not found. Where the find_type tries to find a type and get its index to return, this function simply returns true of the type is not found, and false if the tpe is found |
Cnano::type_not_present< Type, list< Head, Tail...> > | |
Cnano::type_not_present< Type, list< Type, Tail...> > | |
Cnano::type_not_present< Type, list<> > | |
Cnano::detail::vector_convert< Element > | Same as convert, but uses vector's instead of arrays, so the performance is worse |
Cnano::detail::vector_convert< list< First, Rest...> > | |
Cnano::zip< Evaluator, List1, List2, Passed > | Takes two lists, and zips the corresponding elements into a list of 2 elements if the function to determine if the elements should be zips succeeds, otherwise the elements are not zipped |
Cnano::zip< Evaluator, empty_list, empty_list, list< Passed...> > | |
Cnano::zip< Evaluator, list< Head1, Tail1...>, list< Head2, Tail2...>, list< Passed...> > |