HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_ORMConstraint.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: UT_ORMConstraint.h
7  *
8  * COMMENTS:
9  *
10  *
11  */
12 
13 #ifndef __UT_ORMCONSTRAINT_H__
14 #define __UT_ORMCONSTRAINT_H__
15 
16 #include "UT_API.h"
17 
18 #include "UT_NonCopyable.h"
19 #include "UT_ORMDDLReference.h"
20 #include "UT_StringArray.h"
21 #include "UT_StringHolder.h"
22 #include "UT_UniquePtr.h"
23 
25 class UT_ORMModelState;
26 
28 {
29 public:
30  virtual ~UT_IORMConstraint() = default;
34 
35  virtual UT_UniquePtr<UT_IORMConstraint> clone() const = 0;
36 
37  virtual UT_StringHolder constraintSql(
38  const UT_ORMModelState& model,
39  UT_IORMSchemaEditor& editor) const
40  = 0;
41  virtual UT_UniquePtr<UT_ORMDDLStatement> createSql(
42  const UT_ORMModelState& model,
43  const UT_IORMSchemaEditor& editor)
44  = 0;
45  virtual UT_UniquePtr<UT_ORMDDLStatement> removeSql(
46  const UT_ORMModelState& model,
47  const UT_IORMSchemaEditor& editor)
48  = 0;
49 
50  const UT_StringHolder& name() const { return myName; }
51 protected:
53  myName(name)
54  {}
55 
57 };
58 
60 {
61 public:
63  const UT_StringHolder& name,
64  const std::initializer_list<UT_StringHolder>& fields,
67 
68  UT_UniquePtr<UT_IORMConstraint> clone() const override;
69 
71  const UT_ORMModelState& model,
72  UT_IORMSchemaEditor& editor) const override;
74  const UT_ORMModelState& model,
75  const UT_IORMSchemaEditor& editor) override;
77  const UT_ORMModelState& model,
78  const UT_IORMSchemaEditor& editor) override;
79 
80  const UT_StringHolder& condition() const { return myCondition; }
81 
82 private:
83  UT_StringArray myFields;
84  UT_StringHolder myCondition;
85 };
86 
87 #endif // __UT_ORMCONSTRAINT_H__
#define UT_API
Definition: UT_API.h:14
virtual UT_UniquePtr< UT_IORMConstraint > clone() const =0
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition: UT_UniquePtr.h:39
virtual UT_UniquePtr< UT_ORMDDLStatement > createSql(const UT_ORMModelState &model, const UT_IORMSchemaEditor &editor)=0
UT_StringHolder myName
static const UT_StringHolder theEmptyString
const UT_StringHolder & name() const
virtual UT_UniquePtr< UT_ORMDDLStatement > removeSql(const UT_ORMModelState &model, const UT_IORMSchemaEditor &editor)=0
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
GLuint const GLchar * name
Definition: glcorearb.h:786
const UT_StringHolder & condition() const
LeafData & operator=(const LeafData &)=delete
UT_IORMConstraint(const UT_StringHolder &name)
virtual UT_StringHolder constraintSql(const UT_ORMModelState &model, UT_IORMSchemaEditor &editor) const =0