realm-js/property.hpp

87 lines
2.9 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// 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_PROPERTY_HPP
#define REALM_PROPERTY_HPP
#include <string>
namespace realm {
enum PropertyType {
/** Integer type: NSInteger, int, long, Int (Swift) */
PropertyTypeInt = 0,
/** Boolean type: BOOL, bool, Bool (Swift) */
PropertyTypeBool = 1,
/** Float type: CGFloat (32bit), float, Float (Swift) */
PropertyTypeFloat = 9,
/** Double type: CGFloat (64bit), double, Double (Swift) */
PropertyTypeDouble = 10,
/** String type: NSString, String (Swift) */
PropertyTypeString = 2,
/** Data type: NSData */
PropertyTypeData = 4,
/** Any type: id, **not supported in Swift** */
PropertyTypeAny = 6,
/** Date type: NSDate */
PropertyTypeDate = 7,
/** Object type. See [Realm Models](http://realm.io/docs/cocoa/latest/#models) */
PropertyTypeObject = 12,
/** Array type. See [Realm Models](http://realm.io/docs/cocoa/latest/#models) */
PropertyTypeArray = 13,
};
struct Property {
std::string name;
PropertyType type;
std::string object_type;
bool is_primary = false;
bool is_indexed = false;
bool is_nullable = false;
size_t table_column;
bool requires_index() const { return is_primary || is_indexed; }
};
static inline const char *string_for_property_type(PropertyType type) {
switch (type) {
case PropertyTypeString:
return "string";
case PropertyTypeInt:
return "int";
case PropertyTypeBool:
return "bool";
case PropertyTypeDate:
return "date";
case PropertyTypeData:
return "data";
case PropertyTypeDouble:
return "double";
case PropertyTypeFloat:
return "float";
case PropertyTypeAny:
return "any";
case PropertyTypeObject:
return "object";
case PropertyTypeArray:
return "array";
}
}
}
#endif /* REALM_PROPERTY_HPP */