api.hpp File Reference
`#include <string>`
`#include <vector>`
`#include "filval/value.hpp"`
Include dependency graph for api.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Namespaces

| fv
| The namespace containing all filval classes and functions.

## Functions

template<typename T >
Value< T > * | fv::lookup (const std::string &name)
template<typename T >
bool | fv::check_exists (const std::string name)
ObsFilter * | fv::lookup_obs_filter (const std::string &name)
template<typename T >
decltype(auto) | fv::wrapper_vector (Value< int > *size, Value< T *> *data, const std::string &alias="")
template<typename... ArgTypes>
decltype(auto) | fv::zip (Value< std::vector< ArgTypes >> *... args, const std::string &alias="")
template<typename Ret , typename... ArgTypes>
decltype(auto) | fv::map (Function< Ret(ArgTypes...)> &fn, Value< std::vector< std::tuple< ArgTypes... >>> *arg, const std::string &alias="")
template<typename... ArgTypes>
decltype(auto) | fv::tuple (Value< ArgTypes > *... args)
template<size_t N, typename... ArgTypes>
decltype(auto) | fv::detup (Value< std::tuple< ArgTypes... >> *tup, const std::string &alias="")
template<size_t N, typename... ArgTypes>
decltype(auto) | fv::detup_vec (Value< std::vector< std::tuple< ArgTypes... >>> *tup, const std::string &alias="")
template<typename Ret , typename... ArgTypes>
decltype(auto) | fv::apply (Function< Ret(ArgTypes...)> &fn, Value< std::tuple< ArgTypes... >> *arg, const std::string &alias="")
template<typename T1 , typename T2 >
decltype(auto) | fv::pair (Value< T1 > *val1, Value< T2 > *val2, const std::string &alias="")
template<typename T1 , typename T2 >
decltype(auto) | fv::pair (const std::string &name1, const std::string &name2, const std::string &alias="")
template<typename T >
decltype(auto) | fv::reduce (Function< T(std::vector< T >)> &fn, Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::max (Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::max (const std::string &v_name, const std::string &alias="")
template<typename T >
decltype(auto) | fv::min (Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::min (const std::string &v_name, const std::string &alias="")
template<typename T >
decltype(auto) | fv::range (Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::range (const std::string &v_name, const std::string &alias="")
template<typename T >
decltype(auto) | fv::mean (Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::mean (const std::string &v_name, const std::string &alias="")
template<typename T >
decltype(auto) | fv::count (Function< bool(T)> &selector, Value< std::vector< T >> *v, const std::string &alias="")
template<typename T >
decltype(auto) | fv::count (Function< bool(T)> &selector, const std::string &v_name, const std::string &alias="")
template<typename FST , typename SND >
decltype(auto) | fv::cart_product (Value< std::vector< FST >> *val1, Value< std::vector< SND >> *val2, const std::string &alias="")
template<typename FST , typename SND >
decltype(auto) | fv::cart_product (const std::string &val1_name, const std::string &val2_name, const std::string &alias="")
template<typename T , int Size>
decltype(auto) | fv::combinations (Value< std::vector< T >> *val, const std::string &alias="")
template<typename T , int Size>
decltype(auto) | fv::combinations (const std::string &val_name, const std::string alias="")
template<typename T >
decltype(auto) | fv::constant (const std::string name, T const_value, const std::string alias="")
template<typename T >
decltype(auto) | fv::bound (Function< T()> &f, const std::string alias="")
template<typename T >
decltype(auto) | fv::filter (Function< bool(T)> &filter, Value< std::vector< T >> *val, const std::string alias="")
template<typename T >
decltype(auto) | fv::filter (Function< bool(T)> &filter_func, const std::string &val_name, const std::string alias="")
template<typename... ArgTypes>
decltype(auto) | fv::tup_filter (Function< bool(ArgTypes...)> &filter, Value< std::vector< std::tuple< ArgTypes... >>> *val, const std::string alias="")
template<typename... ArgTypes>
decltype(auto) | fv::tup_filter (Function< bool(ArgTypes...)> &filter, const std::string &val_name, const std::string alias="")
ObsFilter * | fv::obs_filter (const std::string &name, std::function< bool()> filter_function, const std::string &impl="")

## Detailed Description

Author
  Caleb Fangmeier caleb.nosp@m.@fan.nosp@m.gmeie.nosp@m.r.te.nosp@m.ch

Version
  0.1

# LICENSE

MIT License

Copyright (c) 2017 Caleb Fangmeier

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

# DESCRIPTION

This is the main api for FilVal. Users should try to avoid instantiating Value objects directly, but rather use these functions. There are multiple reasons for this. First of all, these functions do the extra work of making sure that an identical Value doesn't already exist. If one does, it returns the old Value object rather than creating a new one. The second reason is that C++ allows type deduction for functions so one can often leave out the type definitions to produce shorter, more readable, code. This cannot be done when creating templated objects directly.

Definition in file api.hpp.