SmartFoxServer 2X C++ API
MatchExpression.h
1 // ===================================================================
2 //
3 // Description
4 // Contains the definition of MatchExpression
5 //
6 // Revision history
7 // Date Description
8 // 30-Nov-2012 First version
9 //
10 // ===================================================================
11 #ifndef __MatchExpression__
12 #define __MatchExpression__
13 
14 #include "IMatcher.h"
15 #include "../../Util/Common.h"
16 #include "../Data/ISFSArray.h"
17 #include "../Data/SFSArray.h"
18 
19 #include "LogicOperator.h"
20 
21 #include <boost/shared_ptr.hpp> // Boost Asio shared pointer
22 #include <boost/enable_shared_from_this.hpp> // Boost shared_ptr for this
23 
24 #if defined(_MSC_VER)
25 #pragma warning(disable:4786) // STL library: disable warning 4786; this warning is generated due to a Microsoft bug
26 #endif
27 #include <string> // STL library: string object
28 using namespace std; // STL library: declare the STL namespace
29 
30 namespace Sfs2X {
31 namespace Entities {
32 namespace Match {
33 
106  class DLLImportExport MatchExpression : public boost::enable_shared_from_this<MatchExpression>
107  {
108  public:
109 
110  enum MatchExpressionValueType
111  {
112  MatchExpression_ValueString,
113  MatchExpression_ValueOther
114  };
115 
116  // -------------------------------------------------------------------
117  // Public methods
118  // -------------------------------------------------------------------
119  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
120  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
121  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
122  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
123  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
124  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
125  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
126  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
127  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
128  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
129  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
130  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
131  static boost::shared_ptr<MatchExpression> ChainedMatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> value, boost::shared_ptr<LogicOperator> logicOp, boost::shared_ptr<MatchExpression> parent);
132 
145  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
146  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
147  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
148  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
149  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
150  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
151  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
152  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
153  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
154  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
155  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
156  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
157  MatchExpression(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
158 
171  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
172  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
173  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
174  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
175  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
176  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
177  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
178  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
179  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
180  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
181  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
182  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
183  MatchExpression(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
184 
200  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
201  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
202  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
203  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
204  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
205  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
206  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
207  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
208  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
209  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
210  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
211  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
212  boost::shared_ptr<MatchExpression> And(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
213 
229  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
230  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
231  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
232  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
233  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
234  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
235  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
236  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
237  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
238  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
239  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
240  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
241  boost::shared_ptr<MatchExpression> And(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
242 
258  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
259  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
260  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
261  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
262  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
263  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
264  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
265  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
266  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
267  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
268  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
269  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
270  boost::shared_ptr<MatchExpression> Or(boost::shared_ptr<string> varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
271 
287  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned char> varValue);
288  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<short int> varValue);
289  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned short int> varValue);
290  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<int> varValue);
291  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned int> varValue);
292  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long int> varValue);
293  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long int> varValue);
294  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<long long> varValue);
295  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<unsigned long long> varValue);
296  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<float> varValue);
297  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<double> varValue);
298  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<bool> varValue);
299  boost::shared_ptr<MatchExpression> Or(string varName, boost::shared_ptr<IMatcher> condition, boost::shared_ptr<string> varValue);
300 
309  boost::shared_ptr<string> VarName();
310 
317  boost::shared_ptr<IMatcher> Condition();
318 
322  boost::shared_ptr<void> VarValue();
323 
328  boost::shared_ptr<LogicOperator> LogicOp();
329 
337  bool HasNext();
338 
345  boost::shared_ptr<MatchExpression> Next();
346 
353  boost::shared_ptr<MatchExpression> Rewind();
354 
355  boost::shared_ptr<string> AsString();
356 
357  boost::shared_ptr<string> ToString();
358 
359  boost::shared_ptr<ISFSArray> ToSFSArray();
360 
361  boost::shared_ptr<ISFSArray> ExpressionAsSFSArray();
362 
363  // -------------------------------------------------------------------
364  // Public members
365  // -------------------------------------------------------------------
366  boost::shared_ptr<LogicOperator> logicOp;
367  boost::shared_ptr<MatchExpression> parent;
368  boost::shared_ptr<MatchExpression> next;
369 
370  protected:
371 
372  // -------------------------------------------------------------------
373  // Protected methods
374  // -------------------------------------------------------------------
375 
376  // -------------------------------------------------------------------
377  // Protected members
378  // -------------------------------------------------------------------
379 
380  private:
381 
382  // -------------------------------------------------------------------
383  // Private methods
384  // -------------------------------------------------------------------
385 
386  // -------------------------------------------------------------------
387  // Private members
388  // -------------------------------------------------------------------
389 
390  // Defines types for varValue
391  enum ValueTypes
392  {
393  ValueTypeUnsignedChar = 0,
394  ValueTypeShortInt,
395  ValueTypeUnsignedShortInt,
396  ValueTypeInt,
397  ValueTypeUnsignedInt,
398  ValueTypeLongInt,
399  ValueTypeUnsignedLongInt,
400  ValueTypeLongLong,
401  ValueTypeUnsignedLongLong,
402  ValueTypeFloat,
403  ValueTypeDouble,
404  ValueTypeBool,
405  ValueTypeString,
406  };
407 
408  boost::shared_ptr<string> varName;
409  boost::shared_ptr<IMatcher> condition;
410  boost::shared_ptr<void> varValue;
411  ValueTypes varValueDataType;
412  };
413 
414 } // namespace Match
415 } // namespace Entities
416 } // namespace Sfs2X
417 
418 #endif
STL namespace.
Match Expressions are built like "if" conditions in any common programming language.
Definition: MatchExpression.h:106
Definition: SmartFox.cpp:24