X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/53b27422d140022594fc241cca91c3183be57bca..48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff:/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 index 0000000..66cb118 --- /dev/null +++ b/iOS/Pods/Realm/include/object_schema.hpp @@ -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 + +#include +#include + +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 persisted_properties); + ObjectSchema(std::string name, std::initializer_list persisted_properties, + std::initializer_list 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 persisted_properties; + std::vector 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& 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) */