added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / object_schema.hpp
diff --git a/iOS/Pods/Realm/include/object_schema.hpp b/iOS/Pods/Realm/include/object_schema.hpp
new file mode 100644 (file)
index 0000000..66cb118
--- /dev/null
@@ -0,0 +1,73 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2015 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+#ifndef REALM_OBJECT_SCHEMA_HPP
+#define REALM_OBJECT_SCHEMA_HPP
+
+#include <realm/string_data.hpp>
+
+#include <string>
+#include <vector>
+
+namespace realm {
+class Descriptor;
+class Group;
+class Schema;
+enum class PropertyType: unsigned char;
+struct ObjectSchemaValidationException;
+struct Property;
+
+class ObjectSchema {
+public:
+    ObjectSchema();
+    ObjectSchema(std::string name, std::initializer_list<Property> persisted_properties);
+    ObjectSchema(std::string name, std::initializer_list<Property> persisted_properties,
+                 std::initializer_list<Property> computed_properties);
+    ~ObjectSchema();
+
+    // create object schema from existing table
+    // if no table is provided it is looked up in the group
+    ObjectSchema(Group const& group, StringData name, size_t index=-1);
+
+    std::string name;
+    std::vector<Property> persisted_properties;
+    std::vector<Property> computed_properties;
+    std::string primary_key;
+
+    Property *property_for_name(StringData name);
+    const Property *property_for_name(StringData name) const;
+    Property *primary_key_property() {
+        return property_for_name(primary_key);
+    }
+    const Property *primary_key_property() const {
+        return property_for_name(primary_key);
+    }
+    bool property_is_computed(Property const& property) const;
+
+    void validate(Schema const& schema, std::vector<ObjectSchemaValidationException>& exceptions) const;
+
+    friend bool operator==(ObjectSchema const& a, ObjectSchema const& b);
+
+    static PropertyType from_core_type(Descriptor const& table, size_t col);
+
+private:
+    void set_primary_key_property();
+};
+}
+
+#endif /* defined(REALM_OBJECT_SCHEMA_HPP) */