summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h430
1 files changed, 430 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h b/trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h
new file mode 100644
index 00000000000..688b2df872c
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/ETCL/ETCL_Constraint.h
@@ -0,0 +1,430 @@
+// -*- C++ -*-
+
+// $Id$
+//
+// ============================================================================
+//
+// = LIBRARY
+// orbsvcs/ETCL
+//
+// = FILENAME
+// ECTL_Constraint
+//
+// = AUTHOR
+// Carlos O'Ryan (coryan@cs.wustl.edu)
+// Jeff Parsons (parsons@cs.wustl.edu)
+//
+// ============================================================================
+
+#ifndef TAO_ETCL_CONSTRAINT_H
+#define TAO_ETCL_CONSTRAINT_H
+
+#include "orbsvcs/ETCL/etcl_export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/SString.h"
+
+#include "tao/Basic_Types.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+typedef unsigned short TAO_Literal_Type;
+#define TAO_UNKNOWN 999
+
+class TAO_ETCL_Constraint_Visitor;
+
+namespace CORBA
+{
+ class Any;
+ typedef Any *Any_ptr;
+}
+
+class TAO_ETCL_Export TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Constraint (void);
+ virtual ~TAO_ETCL_Constraint (void);
+ // Constructor and destructor
+
+ virtual int accept (TAO_ETCL_Constraint_Visitor *visitor) = 0;
+};
+
+// ****************************************************************
+
+class TAO_ETCL_Export TAO_ETCL_Literal_Constraint
+ : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Literal_Constraint (void);
+
+ // = Constructors for each of the various types of literals.
+
+ explicit TAO_ETCL_Literal_Constraint (CORBA::Any* any);
+ explicit TAO_ETCL_Literal_Constraint (CORBA::ULong uinteger);
+ explicit TAO_ETCL_Literal_Constraint (CORBA::Long integer);
+ explicit TAO_ETCL_Literal_Constraint (CORBA::Boolean boolean);
+ explicit TAO_ETCL_Literal_Constraint (CORBA::Double doub);
+ explicit TAO_ETCL_Literal_Constraint (const char* str);
+
+ TAO_ETCL_Literal_Constraint (const TAO_ETCL_Literal_Constraint& lit);
+ // Copy constructor
+
+ ~TAO_ETCL_Literal_Constraint(void);
+ // Destructor.
+
+ int accept (TAO_ETCL_Constraint_Visitor* visitor);
+ // Visitor accept method.
+
+ TAO_Literal_Type expr_type (void) const;
+
+ void operator= (const TAO_ETCL_Literal_Constraint& co);
+ // Assignment operator.
+
+ // Conversion routines.
+ operator CORBA::Boolean (void) const;
+ operator CORBA::ULong (void) const;
+ operator CORBA::Long (void) const;
+ operator CORBA::Double (void) const;
+ operator const char* (void) const;
+ operator const CORBA::Any* (void) const;
+
+ // Return the type represented by this MysteryOperand.
+
+ // = Boolean operators.
+
+ bool
+ operator< (const TAO_ETCL_Literal_Constraint& rhs);
+
+ bool
+ operator<= (const TAO_ETCL_Literal_Constraint& rhs);
+
+ bool
+ operator> (const TAO_ETCL_Literal_Constraint& rhs);
+
+ bool
+ operator>= (const TAO_ETCL_Literal_Constraint& rhs);
+
+ bool
+ operator== (const TAO_ETCL_Literal_Constraint& rhs);
+
+ bool
+ operator!= (const TAO_ETCL_Literal_Constraint& rhs);
+
+ // = Arithmetic operators.
+
+ TAO_ETCL_Literal_Constraint
+ operator+ (const TAO_ETCL_Literal_Constraint& rhs);
+
+ TAO_ETCL_Literal_Constraint
+ operator- (const TAO_ETCL_Literal_Constraint& rhs);
+
+ TAO_ETCL_Literal_Constraint
+ operator* (const TAO_ETCL_Literal_Constraint& rhs);
+
+ TAO_ETCL_Literal_Constraint
+ operator/ (const TAO_ETCL_Literal_Constraint& rhs);
+
+ // Unary minus.
+ TAO_ETCL_Literal_Constraint
+ operator- (void);
+
+ TAO_Literal_Type
+ widest_type (const TAO_ETCL_Literal_Constraint& rhs);
+ // Ensure both operands are of the same simple numeric type.
+
+ static TAO_Literal_Type
+ comparable_type (CORBA::TypeCode_ptr type);
+ // Determine the comparable Expression Type from the CORBA type
+
+private:
+ void copy (const TAO_ETCL_Literal_Constraint& co);
+ // Private copy method.
+
+ union
+ {
+ char* str_;
+ CORBA::Any_ptr any_;
+ CORBA::ULong uinteger_;
+ CORBA::Long integer_;
+ CORBA::Boolean bool_;
+ CORBA::Double double_;
+ } op_;
+ // Union of the possible literal types.
+
+ unsigned short type_;
+ // The actual types of the TAO_ETCL_Literal_Constraint.
+};
+
+// ****************************************************************
+
+class TAO_ETCL_Export TAO_ETCL_Identifier : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Identifier (const char *value);
+
+ const char *value (void) const;
+ // Get the value
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ ACE_CString string_;
+ // The value
+};
+
+// ****************************************************************
+
+class TAO_ETCL_Export TAO_ETCL_Union_Value : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Union_Value (int sign,
+ TAO_ETCL_Constraint *integer);
+ TAO_ETCL_Union_Value (TAO_ETCL_Constraint *string);
+ virtual ~TAO_ETCL_Union_Value (void);
+
+ int sign (void) const;
+ TAO_ETCL_Literal_Constraint *integer (void) const;
+ TAO_ETCL_Literal_Constraint *string (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ int sign_;
+ TAO_ETCL_Literal_Constraint *integer_;
+ TAO_ETCL_Literal_Constraint *string_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Union_Pos : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Union_Pos (TAO_ETCL_Constraint *union_value,
+ TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Union_Pos (void);
+
+ TAO_ETCL_Union_Value *union_value (void) const;
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Union_Value *union_value_;
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Component_Pos : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Component_Pos (TAO_ETCL_Constraint *integer,
+ TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Component_Pos (void);
+
+ TAO_ETCL_Literal_Constraint *integer (void) const;
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Literal_Constraint *integer_;
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Component_Assoc : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Component_Assoc (TAO_ETCL_Constraint *identifier,
+ TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Component_Assoc (void);
+
+ TAO_ETCL_Identifier *identifier (void) const;
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Identifier *identifier_;
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Component_Array : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Component_Array (TAO_ETCL_Constraint *integer,
+ TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Component_Array (void);
+
+ TAO_ETCL_Literal_Constraint *integer (void) const;
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Literal_Constraint *integer_;
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Special : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Special (int type);
+ virtual ~TAO_ETCL_Special (void);
+
+ int type (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ int type_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Component : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Component (TAO_ETCL_Constraint *identifier,
+ TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Component (void);
+
+ TAO_ETCL_Identifier *identifier (void) const;
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Identifier *identifier_;
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Dot : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Dot (TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Dot (void);
+
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Eval : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Eval (TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Eval (void);
+
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Default : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Default (TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Default (void);
+
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Exist : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Exist (TAO_ETCL_Constraint *component);
+ virtual ~TAO_ETCL_Exist (void);
+
+ TAO_ETCL_Constraint *component (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ TAO_ETCL_Constraint *component_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Unary_Expr : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Unary_Expr (int type,
+ TAO_ETCL_Constraint *subexpr);
+ virtual ~TAO_ETCL_Unary_Expr (void);
+
+ int type (void) const;
+ TAO_ETCL_Constraint *subexpr (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ int type_;
+ TAO_ETCL_Constraint *subexpr_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Binary_Expr : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Binary_Expr (int type,
+ TAO_ETCL_Constraint *lhs,
+ TAO_ETCL_Constraint *rhs);
+ virtual ~TAO_ETCL_Binary_Expr (void);
+
+ int type (void) const;
+ TAO_ETCL_Constraint *rhs (void) const;
+ TAO_ETCL_Constraint *lhs (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ int type_;
+ TAO_ETCL_Constraint *lhs_;
+ TAO_ETCL_Constraint *rhs_;
+};
+
+class TAO_ETCL_Export TAO_ETCL_Preference : public TAO_ETCL_Constraint
+{
+public:
+ TAO_ETCL_Preference (int type,
+ TAO_ETCL_Constraint *subexpr = 0);
+ virtual ~TAO_ETCL_Preference (void);
+
+ int type (void) const;
+ TAO_ETCL_Constraint *subexpr (void) const;
+
+ // = The Constraint methods.
+ int accept (TAO_ETCL_Constraint_Visitor *visitor);
+
+private:
+ int type_;
+ TAO_ETCL_Constraint *subexpr_;
+};
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#if defined (__ACE_INLINE__)
+#include "orbsvcs/ETCL/ETCL_Constraint.inl"
+#endif /* __ACE_INLINE__ */
+
+#endif /* TAO_ETCL_CONSTRAINT_H */