BitShares-Core  5.0.0
BitShares blockchain implementation and command-line interface software
Classes | Namespaces | Typedefs | Functions
restriction_predicate.hxx File Reference
#include <graphene/protocol/restriction_predicate.hpp>
#include <fc/exception/exception.hpp>
#include "safe_compare.hpp"
#include "create_predicate_fwd.hxx"

Go to the source code of this file.

Classes

struct  graphene::protocol::is_flat_set_impl< typename >
 
struct  graphene::protocol::is_flat_set_impl< flat_set< T > >
 
struct  graphene::protocol::is_container_impl< typename, typename >
 
struct  graphene::protocol::is_container_impl< T, make_void< typename T::value_type, decltype(declval< T >().size())>
 
struct  graphene::protocol::make_flat_set
 
struct  graphene::protocol::make_flat_set::transform< T >
 
struct  graphene::protocol::predicate_invalid< A, B >
 
struct  graphene::protocol::predicate_eq< A, B, typename >
 
struct  graphene::protocol::predicate_eq< Field, Argument, std::enable_if_t< std::is_same< Field, Argument >::value > >
 
struct  graphene::protocol::predicate_eq< Field, Argument, std::enable_if_t< is_integral< Field > &&is_integral< Argument > &&!std::is_same< Field, Argument >::value > >
 
struct  graphene::protocol::predicate_eq< Field, Argument, std::enable_if_t< is_container< Field > &&is_integral< Argument > > >
 
struct  graphene::protocol::predicate_eq< fc::optional< Field >, Argument, std::enable_if_t< comparable_types< Field, Argument > > >
 
struct  graphene::protocol::predicate_eq< fc::optional< Field >, void_t, void >
 
struct  graphene::protocol::predicate_ne< Field, Argument >
 
struct  graphene::protocol::predicate_compare< A, B, typename >
 
struct  graphene::protocol::predicate_compare< Field, Argument, std::enable_if_t< std::is_same< Field, Argument >::value > >
 
struct  graphene::protocol::predicate_compare< Field, Argument, std::enable_if_t< is_integral< Field > &&is_integral< Argument > &&!std::is_same< Field, Argument >::value > >
 
struct  graphene::protocol::predicate_compare< fc::optional< Field >, Argument, void >
 
struct  graphene::protocol::predicate_lt< Field, Argument >
 
struct  graphene::protocol::predicate_le< Field, Argument >
 
struct  graphene::protocol::predicate_gt< Field, Argument >
 
struct  graphene::protocol::predicate_ge< Field, Argument >
 
struct  graphene::protocol::predicate_in< F, C, typename >
 
struct  graphene::protocol::predicate_in< Field, flat_set< Element >, std::enable_if_t< comparable_types< Field, Element > &&!is_safe< Field > > >
 
struct  graphene::protocol::predicate_in< fc::safe< Field >, flat_set< Element >, std::enable_if_t< comparable_types< Field, Element > > >
 
struct  graphene::protocol::predicate_in< fc::optional< Field >, flat_set< Element >, std::enable_if_t< comparable_types< Field, Element > > >
 
struct  graphene::protocol::predicate_in< Container, flat_set< Element >, std::enable_if_t< is_container< Container > &&comparable_types< typename Container::value_type, Element > > >
 
struct  graphene::protocol::predicate_not_in< Field, Container, typename >
 
struct  graphene::protocol::predicate_not_in< Container, flat_set< Element >, std::enable_if_t< is_container< Container > &&comparable_types< typename Container::value_type, Element > > >
 
struct  graphene::protocol::predicate_has_all< C1, C2, typename >
 
struct  graphene::protocol::predicate_has_all< flat_set< FieldElement >, flat_set< ArgumentElement >, std::enable_if_t< comparable_types< FieldElement, ArgumentElement > > >
 
struct  graphene::protocol::predicate_has_all< FieldContainer, flat_set< ArgumentElement >, std::enable_if_t< is_container< FieldContainer > &&!is_flat_set< FieldContainer > &&comparable_types< typename FieldContainer::value_type, ArgumentElement > > >
 
struct  graphene::protocol::predicate_has_all< fc::optional< OptionalType >, Argument, void >
 
struct  graphene::protocol::predicate_has_none< C1, C2, typename >
 
struct  graphene::protocol::predicate_has_none< flat_set< FieldElement >, flat_set< ArgumentElement >, std::enable_if_t< comparable_types< FieldElement, ArgumentElement > > >
 
struct  graphene::protocol::predicate_has_none< FieldContainer, flat_set< ArgumentElement >, std::enable_if_t< is_container< FieldContainer > &&!is_flat_set< FieldContainer > &&comparable_types< typename FieldContainer::value_type, ArgumentElement > > >
 
struct  graphene::protocol::predicate_has_none< fc::optional< OptionalType >, Argument, void >
 
struct  graphene::protocol::attribute_assertion< Field >
 
struct  graphene::protocol::attribute_assertion< fc::optional< Field > >
 
struct  graphene::protocol::attribute_assertion< extension< Extension > >
 
struct  graphene::protocol::variant_assertion< Variant >
 
struct  graphene::protocol::variant_assertion< static_variant< Types... > >
 
struct  graphene::protocol::variant_assertion< fc::optional< static_variant< Types... > > >
 

Namespaces

 graphene
 
 graphene::protocol
 

Typedefs

using graphene::protocol::restriction_function = restriction::function_type
 
using graphene::protocol::restriction_argument = restriction::argument_type
 
template<typename... >
using graphene::protocol::make_void = void
 
template<typename Field >
using graphene::protocol::object_restriction_predicate = std::function< predicate_result(const Field &)>
 
using graphene::protocol::comparable_types_list = typelist::list< int64_t, string, time_point_sec, account_id_type, asset_id_type, force_settlement_id_type, committee_member_id_type, witness_id_type, limit_order_id_type, call_order_id_type, custom_id_type, proposal_id_type, withdraw_permission_id_type, vesting_balance_id_type, worker_id_type, balance_id_type >
 
using graphene::protocol::list_types_list = typelist::transform< typelist::concat< typelist::list< bool, public_key_type, fc::sha256 >, comparable_types_list >, make_flat_set >
 
using graphene::protocol::equality_types_list = typename typelist::concat< typelist::list< void_t, bool, public_key_type, fc::sha256 >, comparable_types_list, list_types_list >
 
using graphene::protocol::attr_types_list = typelist::list< vector< restriction >>
 
using graphene::protocol::or_types_list = typelist::list< vector< vector< restriction >>>
 

Functions

template<typename I , typename = std::enable_if_t<std::is_integral<I>::value>>
const auto & graphene::protocol::to_num (const I &i)
 
template<typename I >
const auto & graphene::protocol::to_num (const fc::safe< I > &i)
 
auto graphene::protocol::to_num (const fc::time_point_sec &t)
 
template<typename Object >
object_restriction_predicate< Object > graphene::protocol::restrictions_to_predicate (vector< restriction >, bool)
 
template<typename F , typename P , typename A , typename = std::enable_if_t<P::valid>>
object_restriction_predicate< F > graphene::protocol::embed_argument (P p, A a, short)
 
template<typename F , typename P , typename A >
object_restriction_predicate< F > graphene::protocol::embed_argument (P, A, long)
 
template<template< typename... > class Predicate, typename Field , typename ArgVariant >
object_restriction_predicate< Field > graphene::protocol::make_predicate (ArgVariant arg)
 
template object_restriction_predicate< share_type > graphene::protocol::create_predicate_function (restriction_function func, restriction_argument arg)
 
template<typename Object , typename = std::enable_if_t<typelist::length<typename fc::reflector<Object>::native_members>() != 0>>
object_restriction_predicate< Object > graphene::protocol::create_field_predicate (restriction &&r, short)
 Create a predicate asserting on the field of the object a restriction is referencing. More...
 
template<typename Object >
object_restriction_predicate< Object > graphene::protocol::create_field_predicate (restriction &&, long)
 
template<typename Object >
object_restriction_predicate< Object > graphene::protocol::create_logical_or_predicate (vector< vector< restriction >> rs)