File: expressionPredicate.h

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-11
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 239,924 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; javascript: 164; makefile: 88
file content (107 lines) | stat: -rw-r--r-- 2,295 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: expressionPredicate.h,v 1.12 2005/10/23 12:02:18 oliver Exp $
//

#ifndef BALL_KERNEL_EXPRESSIONPREDICATE_H
#define BALL_KERNEL_EXPRESSIONPREDICATE_H

#ifndef BALL_KERNEL_ATOM_H
#	include <BALL/KERNEL/atom.h>
#endif

namespace BALL
{
	/** ExpressionPredicate. 
			The base class for all kernel predicates (defined in BALL/KERNEL/standardPredicates.h
			and used by  \link Expression Expression \endlink . You have to derive your own predicate classes from 
			this class if you want to use (and register) them with  \link Expression Expression \endlink .
			 \par
			@see Expression
    	
			\ingroup  Predicates
	*/
	class BALL_EXPORT ExpressionPredicate
		:	public UnaryPredicate<Atom>
	{
		public:

		BALL_CREATE(ExpressionPredicate)

		/**	@name	Constructors and Destructor.
		*/
		//@{

		/** Default Constructor
		*/
		ExpressionPredicate();
			
		/** Copy constructor 
		 */
		ExpressionPredicate(const ExpressionPredicate& predicate);

		/** Detailed Constructor.
				Construct an ExpressionPredicate with a string.
				@param argument the argument to use for this predicate
		*/
		ExpressionPredicate(const String& argument);

		/** Destructor
		*/
		virtual ~ExpressionPredicate();

		//@}
		/** @name Assignment 
		 */
		//@{

		/** Assignment operator 
		 */
		ExpressionPredicate& operator = (const ExpressionPredicate& predicate);

		/** Clear method 
		 */
		virtual void clear();

		//@}
		/** @name Predicates 
		 */
		//@{

		/** Equality operator 
		 */
		bool operator == (const ExpressionPredicate& predicate) const;

		//@}
		/** @name Accessors.
		*/
		//@{

		/** evaluate this ExpressionPredicate by comparing its argument with
				the selected predicate of atom.
				@param atom the atom to compare with
		*/
		virtual bool operator () (const Atom& atom) const;

		/** set the Argument of this ExpressionPredicate
				@param argument the string to use for this predicate
		*/
		virtual void setArgument(const String& argument);

		/** Get the argument of an ExpressionPredicate
				@return the argument of the expression
		 */
		const String& getArgument() const;

		//@}
		
		protected:
		
		/*_ The argument of the predicate 
		 */
		String argument_;
	};
}

#endif // BALL_KERNEL_EXPRESSIONPREDICATE_H