GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
operators.hpp
Go to the documentation of this file.
1// This file is distributed under the BSD License.
2// See "license.txt" for details.
3// Copyright 2009-2012, Jonathan Turner (jonathan@emptycrate.com)
4// Copyright 2009-2017, Jason Turner (jason@emptycrate.com)
5// http://www.chaiscript.com
6
7// This is an open source non-commercial project. Dear PVS-Studio, please check it.
8// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
9
10
11#ifndef CHAISCRIPT_OPERATORS_HPP_
12#define CHAISCRIPT_OPERATORS_HPP_
13
15#include "register_function.hpp"
16
17namespace chaiscript
18{
19 namespace bootstrap
20 {
21 namespace operators
22 {
23 template<typename T>
24 void assign(Module& m)
25 {
26 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs = rhs;}), "=");
27 }
28
29 template<typename T>
31 {
32 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs &= rhs;}), "&=");
33 }
34
35 template<typename T>
37 {
38 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs ^= rhs;}), "^=");
39 }
40
41 template<typename T>
43 {
44 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs |= rhs;}), "|=");
45 }
46
47 template<typename T>
49 {
50 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs -= rhs;}), "-=");
51 }
52
53 template<typename T>
55 {
56 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs <<= rhs;}), "<<=");
57 }
58
59 template<typename T>
61 {
62 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs <<= rhs;}), "*=");
63 }
64
65 template<typename T>
67 {
68 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs /= rhs;}), "/=");
69 }
70
71 template<typename T>
73 {
74 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs %= rhs;}), "%=");
75 }
76
77 template<typename T>
79 {
80 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs >>= rhs;}), ">>=");
81 }
82
83 template<typename T>
85 {
86 m.add(chaiscript::fun([](T &lhs, const T&rhs)->T&{return lhs += rhs;}), "+=");
87 }
88
89 template<typename T>
91 {
92 m.add(chaiscript::fun([](T &lhs)->T&{return --lhs;}), "--");
93 }
94
95 template<typename T>
97 {
98 m.add(chaiscript::fun([](T &lhs)->T&{return ++lhs;}), "++");
99 }
100
101 template<typename T>
102 void equal(Module& m)
103 {
104 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs==rhs;}), "==");
105 }
106
107 template<typename T>
109 {
110 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs>rhs;}), ">");
111 }
112
113 template<typename T>
115 {
116 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs>=rhs;}), ">=");
117 }
118
119 template<typename T>
121 {
122 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs<rhs;}), "<");
123 }
124
125 template<typename T>
127 {
128 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs<=rhs;}), "<=");
129 }
130
131 template<typename T>
133 {
134 m.add(chaiscript::fun([](const T &lhs){return !lhs;}), "!");
135 }
136
137 template<typename T>
139 {
140 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs!=rhs;}), "!=");
141 }
142
143 template<typename T>
145 {
146 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs+rhs;}), "+");
147 }
148
149 template<typename T>
151 {
152 m.add(chaiscript::fun([](const T &lhs){return +lhs;}), "+");
153 }
154
155 template<typename T>
157 {
158 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs-rhs;}), "-");
159 }
160
161 template<typename T>
163 {
164 m.add(chaiscript::fun([](const T &lhs){return -lhs;}), "-");
165 }
166
167 template<typename T>
169 {
170 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs&rhs;}), "&");
171 }
172
173 template<typename T>
175 {
176 m.add(chaiscript::fun([](const T &lhs){return ~lhs;}), "~");
177 }
178
179 template<typename T>
181 {
182 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs^rhs;}), "^");
183 }
184
185 template<typename T>
187 {
188 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs|rhs;}), "|");
189 }
190
191 template<typename T>
193 {
194 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs/rhs;}), "/");
195 }
196
197 template<typename T>
199 {
200 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs<<rhs;}), "<<");
201 }
202
203 template<typename T>
205 {
206 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs*rhs;}), "*");
207 }
208
209 template<typename T>
211 {
212 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs%rhs;}), "%");
213 }
214
215 template<typename T>
217 {
218 m.add(chaiscript::fun([](const T &lhs, const T &rhs){return lhs>>rhs;}), ">>");
219 }
220 }
221 }
222}
223
224#endif
Holds a collection of ChaiScript settings which can be applied to the ChaiScript runtime....
Definition dispatchkit.hpp:150
Module & add(Type_Info ti, std::string name)
Definition dispatchkit.hpp:152
Definition operators.hpp:22
void bitwise_or(Module &m)
Definition operators.hpp:186
void assign_bitwise_or(Module &m)
Definition operators.hpp:42
void assign_remainder(Module &m)
Definition operators.hpp:72
void assign_quotient(Module &m)
Definition operators.hpp:66
void unary_plus(Module &m)
Definition operators.hpp:150
void less_than(Module &m)
Definition operators.hpp:120
void bitwise_compliment(Module &m)
Definition operators.hpp:174
void assign(Module &m)
Definition operators.hpp:24
void assign_product(Module &m)
Definition operators.hpp:60
void assign_xor(Module &m)
Definition operators.hpp:36
void assign_right_shift(Module &m)
Definition operators.hpp:78
void assign_difference(Module &m)
Definition operators.hpp:48
void greater_than_equal(Module &m)
Definition operators.hpp:114
void addition(Module &m)
Definition operators.hpp:144
void greater_than(Module &m)
Definition operators.hpp:108
void assign_left_shift(Module &m)
Definition operators.hpp:54
void division(Module &m)
Definition operators.hpp:192
void equal(Module &m)
Definition operators.hpp:102
void bitwise_and(Module &m)
Definition operators.hpp:168
void left_shift(Module &m)
Definition operators.hpp:198
void right_shift(Module &m)
Definition operators.hpp:216
void prefix_increment(Module &m)
Definition operators.hpp:96
void remainder(Module &m)
Definition operators.hpp:210
void assign_sum(Module &m)
Definition operators.hpp:84
void multiplication(Module &m)
Definition operators.hpp:204
void unary_minus(Module &m)
Definition operators.hpp:162
void not_equal(Module &m)
Definition operators.hpp:138
void bitwise_xor(Module &m)
Definition operators.hpp:180
void prefix_decrement(Module &m)
Definition operators.hpp:90
void assign_bitwise_and(Module &m)
Definition operators.hpp:30
void logical_compliment(Module &m)
Definition operators.hpp:132
void subtraction(Module &m)
Definition operators.hpp:156
void less_than_equal(Module &m)
Definition operators.hpp:126
Classes and functions useful for bootstrapping of ChaiScript and adding of new types.
Definition bootstrap.hpp:21
Namespace chaiscript contains every API call that the average user will be concerned with.
Proxy_Function fun(const T &t)
Creates a new Proxy_Function object from a free function, member function or data member.
Definition register_function.hpp:43
Definition GameApi.h:42