Om
back_pull_operand_operation.cpp
Go to the documentation of this file.
1 
15 #ifndef Om_Language_Operation_BackPullOperandOperation_
16 
18 
19  #ifdef Om_Macro_Test_
20 
21  #include "om/language/system.hpp"
22 
23  #ifndef Om_Macro_Precompilation_
24 
25  #include "boost/test/unit_test.hpp"
26 
27  #endif
28 
29 namespace Om {
30 
31  namespace Language {
32 
33  namespace Operation {
34 
35  BOOST_AUTO_TEST_SUITE(BackPullOperandOperationTest)
36 
37  BOOST_AUTO_TEST_CASE(DefinitionTest) {
38  BOOST_CHECK_EQUAL(
39  "{[...operand]->}",
40  System::Get().Evaluate("drop find {[...operand]->} system")
41  );
42  }
43 
44  BOOST_AUTO_TEST_CASE(GeneralTest) {
45  BOOST_CHECK_EQUAL(
46  "{}{1{2}3}",
47  System::Get().Evaluate("[...operand]-> {1{2}3}")
48  );
49 
50  BOOST_CHECK_EQUAL(
51  "{{2}}{1}",
52  System::Get().Evaluate("[...operand]-> {1{2}}")
53  );
54 
55  BOOST_CHECK_EQUAL(
56  "{}{}",
57  System::Get().Evaluate("[...operand]-> {}")
58  );
59 
60  BOOST_CHECK_EQUAL(
61  "{{only}}{}",
62  System::Get().Evaluate("[...operand]-> {{only}}")
63  );
64 
65  BOOST_CHECK_EQUAL(
66  "[...operand]->",
67  System::Get().Evaluate("[...operand]->")
68  );
69  }
70 
71  BOOST_AUTO_TEST_SUITE_END()
72 
73  }
74 
75  }
76 
77 }
78 
79  #endif
80 
81 #else
82 
83  #include "om/language/literal.hpp"
85 
86 // MARK: - Om::Language::Operation::BackPullOperandOperation
87 
88  #define Type_ \
89  Om::Language::Operation::BackPullOperandOperation
90 
91 // MARK: public (static)
92 
93 inline char const * Type_::GetName() {
95 }
96 
97 inline void Type_::Give(Evaluation & theEvaluation) {
98  theEvaluation.TakeOperation(
99  std::auto_ptr<IncompleteOperation>(
100  new PullOperation<
101  Literal,
102  BackPullOperandOperation
103  >
104  )
105  );
106 }
107 
108 template <typename TheConsumer>
109 inline void Type_::Pull(
110  Literal & theLiteral,
111  TheConsumer & theConsumer
112 ) {
113  theLiteral.BackGive<Operand>(theConsumer);
114 }
115 
116  #undef Type_
117 
118 #endif
#define Om_Language_Operation_BackPullOperandOperation_GetName_()
static System & Get()
Om header file.
The Om library.
Definition: code_point.hpp:26
std::auto_ptr< TheGiveable > Give(TheGiveable &)
Calls Move on the object.
Om header file.
Om header file.