rippled
flags.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_TEST_JTX_FLAGS_H_INCLUDED
21 #define RIPPLE_TEST_JTX_FLAGS_H_INCLUDED
22 
23 #include <ripple/basics/contract.h>
24 #include <ripple/protocol/LedgerFormats.h>
25 #include <ripple/protocol/TxFlags.h>
26 #include <test/jtx/Env.h>
27 
28 namespace ripple {
29 namespace test {
30 namespace jtx {
31 
32 // JSON generators
33 
36 fset(Account const& account, std::uint32_t on, std::uint32_t off = 0);
37 
39 inline Json::Value
40 fclear(Account const& account, std::uint32_t off)
41 {
42  return fset(account, 0, off);
43 }
44 
45 namespace detail {
46 
48 {
49 protected:
51 
52 private:
53  void
55  {
56  switch (flag)
57  {
58  case asfRequireDest:
60  break;
61  case asfRequireAuth:
63  break;
64  case asfDisallowXRP:
66  break;
67  case asfDisableMaster:
69  break;
70  // case asfAccountTxnID: // ???
71  case asfNoFreeze:
72  mask_ |= lsfNoFreeze;
73  break;
74  case asfGlobalFreeze:
76  break;
77  case asfDefaultRipple:
79  break;
80  case asfDepositAuth:
82  break;
85  break;
86  default:
87  Throw<std::runtime_error>("unknown flag");
88  }
89  }
90 
91  template <class Flag, class... Args>
92  void
93  set_args(std::uint32_t flag, Args... args)
94  {
95  set_args(flag);
96  if constexpr (sizeof...(args))
97  set_args(args...);
98  }
99 
100 protected:
101  template <class... Args>
102  flags_helper(Args... args) : mask_(0)
103  {
104  set_args(args...);
105  }
106 };
107 
108 } // namespace detail
109 
112 {
113 private:
115 
116 public:
117  template <class... Args>
118  flags(Account const& account, Args... args)
119  : flags_helper(args...), account_(account)
120  {
121  }
122 
123  void
124  operator()(Env& env) const;
125 };
126 
129 {
130 private:
132 
133 public:
134  template <class... Args>
135  nflags(Account const& account, Args... args)
136  : flags_helper(args...), account_(account)
137  {
138  }
139 
140  void
141  operator()(Env& env) const;
142 };
143 
144 } // namespace jtx
145 } // namespace test
146 } // namespace ripple
147 
148 #endif
ripple::test::jtx::detail::flags_helper::flags_helper
flags_helper(Args... args)
Definition: flags.h:102
ripple::test::jtx::nflags::operator()
void operator()(Env &env) const
Definition: flags.cpp:51
ripple::test::jtx::flags::account_
Account account_
Definition: flags.h:114
ripple::test::jtx::detail::flags_helper::set_args
void set_args(std::uint32_t flag)
Definition: flags.h:54
ripple::asfDisallowXRP
constexpr std::uint32_t asfDisallowXRP
Definition: TxFlags.h:76
ripple::asfDepositAuth
constexpr std::uint32_t asfDepositAuth
Definition: TxFlags.h:82
ripple::lsfGlobalFreeze
@ lsfGlobalFreeze
Definition: LedgerFormats.h:262
ripple::lsfDisableMaster
@ lsfDisableMaster
Definition: LedgerFormats.h:260
ripple::test::jtx::detail::flags_helper::mask_
std::uint32_t mask_
Definition: flags.h:50
ripple::asfNoFreeze
constexpr std::uint32_t asfNoFreeze
Definition: TxFlags.h:79
ripple::test::jtx::detail::flags_helper::set_args
void set_args(std::uint32_t flag, Args... args)
Definition: flags.h:93
ripple::lsfAllowTrustLineClawback
@ lsfAllowTrustLineClawback
Definition: LedgerFormats.h:278
ripple::lsfDepositAuth
@ lsfDepositAuth
Definition: LedgerFormats.h:265
ripple::test::jtx::flags::flags
flags(Account const &account, Args... args)
Definition: flags.h:118
ripple::test::jtx::nflags::nflags
nflags(Account const &account, Args... args)
Definition: flags.h:135
ripple::test::jtx::nflags::account_
Account account_
Definition: flags.h:131
ripple::lsfRequireAuth
@ lsfRequireAuth
Definition: LedgerFormats.h:257
ripple::lsfDefaultRipple
@ lsfDefaultRipple
Definition: LedgerFormats.h:263
ripple::asfDisableMaster
constexpr std::uint32_t asfDisableMaster
Definition: TxFlags.h:77
ripple::test::jtx::fset
Json::Value fset(Account const &account, std::uint32_t on, std::uint32_t off=0)
Add and/or remove flag.
Definition: flags.cpp:28
std::uint32_t
ripple::test::jtx::fclear
Json::Value fclear(Account const &account, std::uint32_t off)
Remove account flag.
Definition: flags.h:40
ripple::lsfRequireDestTag
@ lsfRequireDestTag
Definition: LedgerFormats.h:255
ripple::test::jtx::flags::operator()
void operator()(Env &env) const
Definition: flags.cpp:41
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::test::jtx::detail::flags_helper
Definition: flags.h:47
ripple::test::jtx::flags
Match set account flags.
Definition: flags.h:111
ripple::lsfNoFreeze
@ lsfNoFreeze
Definition: LedgerFormats.h:261
ripple::asfRequireAuth
constexpr std::uint32_t asfRequireAuth
Definition: TxFlags.h:75
ripple::asfDefaultRipple
constexpr std::uint32_t asfDefaultRipple
Definition: TxFlags.h:81
ripple::asfRequireDest
constexpr std::uint32_t asfRequireDest
Definition: TxFlags.h:74
ripple::test::jtx::nflags
Match clear account flags.
Definition: flags.h:128
ripple::asfGlobalFreeze
constexpr std::uint32_t asfGlobalFreeze
Definition: TxFlags.h:80
ripple::test::jtx::Account
Immutable cryptographic account descriptor.
Definition: Account.h:37
ripple::lsfDisallowXRP
@ lsfDisallowXRP
Definition: LedgerFormats.h:259
ripple::asfAllowTrustLineClawback
constexpr std::uint32_t asfAllowTrustLineClawback
Definition: TxFlags.h:91
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:117
Json::Value
Represents a JSON value.
Definition: json_value.h:145