Go to the documentation of this file.
16 #ifndef GRAPHSCOPE_TYPES_H_
17 #define GRAPHSCOPE_TYPES_H_
26 #include <boost/date_time/posix_time/posix_time.hpp>
28 #include "grape/serialization/in_archive.h"
29 #include "grape/serialization/out_archive.h"
31 #include <yaml-cpp/yaml.h>
35 inline bool operator<(
const EmptyType& lhs,
const EmptyType& rhs) {
50 static constexpr
const char*
DT_BOOL =
"DT_BOOL";
51 static constexpr
const char*
DT_FLOAT =
"DT_FLOAT";
52 static constexpr
const char*
DT_DOUBLE =
"DT_DOUBLE";
53 static constexpr
const char*
DT_STRING =
"DT_STRING";
55 static constexpr
const char*
DT_DATE =
"DT_DATE32";
56 static constexpr
const char*
DT_DAY =
"DT_DAY32";
157 namespace config_parsing {
208 return milli_second < rhs.milli_second;
211 int64_t milli_second;
233 const boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
235 boost::gregorian::date new_date(
year(),
month(),
day());
236 boost::posix_time::ptime new_time_point(
237 new_date, boost::posix_time::time_duration(
hour(), 0, 0));
238 boost::posix_time::time_duration diff = new_time_point - epoch;
239 int64_t new_timestamp_sec = diff.total_seconds();
241 return new_timestamp_sec * 1000;
245 const boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
246 int64_t ts_sec = ts / 1000;
247 boost::posix_time::ptime time_point =
248 epoch + boost::posix_time::seconds(ts_sec);
249 boost::posix_time::ptime::date_type date = time_point.date();
250 boost::posix_time::time_duration td = time_point.time_of_day();
251 this->
value.internal.year = date.year();
252 this->
value.internal.month = date.month().as_number();
253 this->
value.internal.day = date.day();
254 this->
value.internal.hour = td.hours();
257 CHECK_EQ(ts, ts_back);
292 template <
typename T>
306 Record(
const std::vector<Any>& vec);
307 Record(
const std::initializer_list<Any>& list);
323 ptr =
new std::string(*other.
ptr);
330 if (
this == &other) {
337 ptr =
new std::string(*other.
ptr);
350 return std::string_view((*ptr).data(), (*ptr).size());
380 template <
typename T>
392 memcpy(
static_cast<void*
>(&
value),
static_cast<const void*
>(&other.
value),
403 memcpy(
static_cast<void*
>(&
value),
static_cast<const void*
>(&other.value),
408 Any(
const std::initializer_list<Any>& list) {
412 Any(
const std::vector<Any>& vec) {
417 Any(
const std::string& str) {
422 template <
typename T>
431 memcpy(
static_cast<void*
>(&
value),
static_cast<const void*
>(&a.
value),
437 if (
this == &other) {
449 memcpy(
static_cast<void*
>(&
value),
static_cast<const void*
>(&other.
value),
571 return value.
d.to_string();
587 return value.
b ?
"true" :
"false";
595 LOG(FATAL) <<
"Unexpected property type: "
680 template <
typename T>
692 return value.
d.milli_second == other.
value.
d.milli_second;
748 return value.
d.milli_second < other.
value.
d.milli_second;
787 LOG(FATAL) <<
"Type [" <<
static_cast<int>(
type.
type_enum) <<
"] and ["
789 <<
"] cannot be compared..";
797 template <
typename T>
799 static void to(
const Any& value, T& out) {
800 LOG(FATAL) <<
"Unexpected convert type...";
806 static void to(
const Any& value,
bool& out) {
814 static void to(
const Any& value, int32_t& out) {
822 static void to(
const Any& value, uint32_t& out) {
830 static void to(
const Any& value, int64_t& out) {
838 static void to(
const Any& value, uint64_t& out) {
862 static void to(
const Any& value, Date& out) {
878 static void to(
const Any& value, grape::EmptyType& out) {
885 static void to(
const Any& value, std::string& out) {
893 static void to(
const Any& value, std::string_view& out) {
901 static void to(
const Any& value,
float& out) {
909 static void to(
const Any& value,
double& out) {
932 template <
typename T>
933 struct AnyConverter {};
1181 return grape::EmptyType();
1185 return grape::EmptyType();
1289 template <
typename T>
1297 grape::InArchive&
operator<<(grape::InArchive& in_archive,
1299 grape::OutArchive&
operator>>(grape::OutArchive& out_archive,
1302 grape::InArchive&
operator<<(grape::InArchive& in_archive,
const Any& value);
1303 grape::OutArchive&
operator>>(grape::OutArchive& out_archive,
Any& value);
1305 grape::InArchive&
operator<<(grape::InArchive& in_archive,
1306 const std::string_view& value);
1307 grape::OutArchive&
operator>>(grape::OutArchive& out_archive,
1308 std::string_view& value);
1310 grape::InArchive&
operator<<(grape::InArchive& in_archive,
1318 inline std::size_t
hash_value(
const grape::EmptyType& value) {
return 0; }
1320 return std::hash<uint64_t>()(value.
global_id);
1324 return std::hash<int32_t>()(key.
label_id);
1332 os << dt.to_string();
1373 os <<
"vertex_global_id";
1381 struct hash<
gs::GlobalId> {
1383 return std::hash<uint64_t>()(value.
global_id);
1390 inline bool operator==(
const EmptyType& a,
const EmptyType& b) {
return true; }
1392 inline bool operator!=(
const EmptyType& a,
const EmptyType& b) {
return false; }
1397 struct convert<
gs::PropertyType> {
1400 if (config[
"primitive_type"]) {
1402 config[
"primitive_type"].as<std::string>());
1403 }
else if (config[
"string"]) {
1404 if (config[
"string"].IsMap()) {
1405 if (config[
"string"][
"long_text"]) {
1407 }
else if (config[
"string"][
"var_char"]) {
1408 if (config[
"string"][
"var_char"][
"max_length"]) {
1410 config[
"string"][
"var_char"][
"max_length"].as<int32_t>());
1415 LOG(ERROR) <<
"Unrecognized string type";
1418 LOG(ERROR) <<
"string should be a map";
1420 }
else if (config[
"temporal"]) {
1421 if (config[
"temporal"][
"date32"]) {
1423 }
else if (config[
"temporal"][
"timestamp"]) {
1426 LOG(ERROR) <<
"Unrecognized temporal type";
1430 else if (config[
"day"]) {
1432 config[
"day"].as<std::string>());
1433 }
else if (config[
"varchar"]) {
1434 if (config[
"varchar"][
"max_length"]) {
1436 config[
"varchar"][
"max_length"].as<int32_t>());
1441 }
else if (config[
"date"]) {
1444 LOG(ERROR) <<
"Unrecognized property type: " << config;
1458 node[
"primitive_type"] =
1462 node[
"string"][
"long_text"] =
"";
1464 node[
"string"][
"var_char"][
"max_length"] =
1467 node[
"temporal"][
"timestamp"] =
"";
1469 node[
"temporal"][
"date32"] =
"";
1471 LOG(ERROR) <<
"Unrecognized property type: " << type;
1478 #endif // GRAPHSCOPE_TYPES_H_
double db
Definition: types.h:370
static Any to_any(const LabelKey &value)
Definition: types.h:1232
static PropertyType type()
Definition: types.h:938
bool operator==(const Day &rhs) const
Definition: types.h:261
static Any to_any(const uint16_t &value)
Definition: types.h:970
static const PropertyType kFloat
Definition: types.h:139
static PropertyType UInt64()
Definition: types.cc:302
static PropertyType String()
Definition: types.cc:314
static void to(const Any &value, std::string &out)
Definition: types.h:885
static PropertyType type()
Definition: types.h:1062
~Record()
Definition: types.cc:152
static PropertyType type()
Definition: types.h:1172
uint32_t year
Definition: types.h:215
static PropertyType VertexGlobalId()
Definition: types.cc:327
static Any to_any(const RecordView &value)
Definition: types.h:1253
bool AsBool() const
Definition: types.h:626
StringPtr s_ptr
Definition: types.h:377
static const Date & from_any_value(const AnyValue &value)
Definition: types.h:1101
static Any to_any(const Day &value)
Definition: types.h:1108
uint64_t AsUInt64() const
Definition: types.h:611
bool operator==(const Any &other) const
Definition: types.h:685
std::string to_string() const
Definition: types.cc:525
static const PropertyType kUInt8
Definition: types.h:135
int64_t l
Definition: types.h:362
static void to(const Any &value, Date &out)
Definition: types.h:862
static PropertyType Empty()
Definition: types.cc:278
static const double & from_any_value(const AnyValue &value)
Definition: types.h:1204
void set_vertex_gid(GlobalId v)
Definition: types.h:492
Record record
Definition: types.h:376
static grape::EmptyType from_any_value(const AnyValue &value)
Definition: types.h:1184
void set_label_key(LabelKey v)
Definition: types.h:497
Any ConvertStringToAny(const std::string &value, const gs::PropertyType &type)
Definition: types.cc:551
Any * begin() const
Definition: types.cc:149
static Any to_any(const double &value)
Definition: types.h:1193
uint32_t month
Definition: types.h:216
static const bool & from_any(const Any &value)
Definition: types.h:945
static void to(const Any &value, bool &out)
Definition: types.h:806
static void to(const Any &value, grape::EmptyType &out)
Definition: types.h:878
const LabelKey & AsLabelKey() const
Definition: types.h:665
static PropertyType type()
Definition: types.h:1152
static const PropertyType kString
Definition: types.h:151
void set_u32(uint32_t v)
Definition: types.h:477
bool operator>(const GlobalId &lhs, const GlobalId &rhs)
Definition: types.h:196
static const Day & from_any(const Any &value)
Definition: types.h:1121
int32_t i
Definition: types.h:359
static Any to_any(const std::string_view &value)
Definition: types.h:1133
bool operator<(const GlobalId &lhs, const GlobalId &rhs)
Definition: types.h:192
static const std::string_view & from_any(const Any &value)
Definition: types.h:1139
StringPtr(const std::string &str)
Definition: types.h:320
static const float & from_any(const Any &value)
Definition: types.h:1220
static constexpr const char * DT_DOUBLE
Definition: types.h:52
static Any From(const T &value)
Definition: types.h:681
static PropertyType Label()
Definition: types.cc:331
static constexpr const char * DT_STRING
Definition: types.h:53
Any(const std::string &str)
Definition: types.h:417
static void to(const Any &value, uint32_t &out)
Definition: types.h:822
static Any to_any(int64_t value)
Definition: types.h:1090
static grape::EmptyType from_any(const Any &value)
Definition: types.h:1179
static const Record & from_any(const Any &value)
Definition: types.h:1279
void set_i64(int64_t v)
Definition: types.h:482
static PropertyType StringView()
Definition: types.cc:317
static const int32_t & from_any_value(const AnyValue &value)
Definition: types.h:996
bool operator!=(const GlobalId &lhs, const GlobalId &rhs)
Definition: types.h:189
static PropertyType Varchar(uint16_t max_length)
Definition: types.cc:323
std::string to_string(const gs::flex::interactive::Code &status)
Definition: result.h:166
bool operator<(const Day &rhs) const
Definition: types.h:260
static const PropertyType kDay
Definition: types.h:144
static PropertyType UInt32()
Definition: types.cc:293
static PropertyType type()
Definition: types.h:1212
static PropertyType Bool()
Definition: types.cc:281
static constexpr uint64_t vid_mask
Definition: types.h:168
uint32_t vid_t
Definition: types.h:165
uint32_t to_u32() const
Definition: types.cc:539
static const PropertyType kDate
Definition: types.h:143
uint8_t label_data_type
Definition: types.h:277
static constexpr const char * DT_DATE
Definition: types.h:55
static Any to_any(const Date &value)
Definition: types.h:1084
static void to(const Any &value, T &out)
Definition: types.h:799
static constexpr const char * DT_FLOAT
Definition: types.h:51
Definition: adj_list.h:23
void set_string(const std::string &v)
Definition: types.h:522
size_t offset
Definition: types.h:295
Any operator[](size_t idx) const
Definition: types.cc:89
RecordView record_view
Definition: types.h:373
static const PropertyType kLabel
Definition: types.h:148
static const RecordView & from_any_value(const AnyValue &value)
Definition: types.h:1264
static const LabelKey & from_any(const Any &value)
Definition: types.h:1238
static const LabelKey & from_any_value(const AnyValue &value)
Definition: types.h:1243
static constexpr const char * DT_STRINGMAP
Definition: types.h:54
static Any to_any(const grape::EmptyType &value)
Definition: types.h:1174
static const PropertyType kUInt64
Definition: types.h:141
int32_t AsInt32() const
Definition: types.h:616
static const PropertyType kEmpty
Definition: types.h:133
static Any to_any(const int32_t &value)
Definition: types.h:985
StorageStrategy
Definition: types.h:58
int64_t AsInt64() const
Definition: types.h:606
impl::PropertyTypeImpl type_enum
Definition: types.h:97
std::string ToString() const
Definition: types.cc:229
void set_date(int64_t v)
Definition: types.h:502
Any operator[](size_t idx) const
Definition: types.cc:142
static void to(const Any &value, int32_t &out)
Definition: types.h:814
void set_u8(uint8_t v)
Definition: types.h:537
bool operator==(const EmptyType &a, const EmptyType &b)
Definition: types.h:1390
void set_double(double db)
Definition: types.h:532
void set_bool(bool v)
Definition: types.h:467
uint32_t AsUInt32() const
Definition: types.h:621
static void to(const Any &value, RecordView &out)
Definition: types.h:917
static std::string & from_any_value(const AnyValue &value)
Definition: types.h:1165
static void to(const Any &value, int64_t &out)
Definition: types.h:830
int64_t to_timestamp() const
Definition: types.h:232
size_t len
Definition: types.h:314
static const int32_t & from_any(const Any &value)
Definition: types.h:991
PropertyType StringToPrimitivePropertyType(const std::string &str)
Definition: types.cc:55
static PropertyType Date()
Definition: types.cc:308
Any * end() const
Definition: types.cc:150
bool operator<(const EmptyType &lhs, const EmptyType &rhs)
Definition: types.h:35
Any * props
Definition: types.h:315
const GlobalId & AsGlobalId() const
Definition: types.h:660
static constexpr const uint16_t STRING_DEFAULT_MAX_LENGTH
Definition: types.h:96
void set_i32(int32_t v)
Definition: types.h:472
static const PropertyType kStringView
Definition: types.h:145
static PropertyType type()
Definition: types.h:1042
bool b
Definition: types.h:358
double AsDouble() const
Definition: types.h:631
static const double & from_any(const Any &value)
Definition: types.h:1199
static const GlobalId & from_any_value(const AnyValue &value)
Definition: types.h:1075
Any(const std::initializer_list< Any > &list)
Definition: types.h:408
static const int64_t & from_any(const Any &value)
Definition: types.h:1030
constexpr PropertyType(impl::PropertyTypeImpl type, uint16_t max_length)
Definition: types.h:104
static Any to_any(const Record &value)
Definition: types.h:1273
static const uint32_t & from_any(const Any &value)
Definition: types.h:1011
static void to(const Any &value, double &out)
Definition: types.h:909
Any()
Definition: types.h:384
Any(const Any &other)
Definition: types.h:386
static const GlobalId & from_any(const Any &value)
Definition: types.h:1070
static PropertyType Int64()
Definition: types.cc:299
uint64_t gid_t
Definition: types.h:166
static PropertyType type()
Definition: types.h:983
AnyValue value
Definition: types.h:794
vid_t vid() const
Definition: types.cc:521
int day() const
Definition: types.cc:547
RecordView()
Definition: types.h:286
static void to(const Any &value, float &out)
Definition: types.h:901
static void to(const Any &value, Day &out)
Definition: types.h:870
int32_t label_id
Definition: types.h:278
static PropertyType type()
Definition: types.h:1082
static const PropertyType kUInt32
Definition: types.h:138
static std::string & from_any(const Any &value)
Definition: types.h:1160
static Any to_any(const uint64_t &value)
Definition: types.h:1044
PropertyTypeImpl
Definition: types.h:66
static PropertyType StringMap()
Definition: types.cc:320
uint64_t global_id
Definition: types.h:173
constexpr PropertyType()
Definition: types.h:100
bool operator!=(const PropertyType &other) const
Definition: types.cc:221
static void to(const Any &value, Record &out)
Definition: types.h:926
struct __attribute__((packed)) ImmutableNbr< Date >
Definition: nbr.h:54
static constexpr const char * DT_UNSIGNED_INT32
Definition: types.h:47
static const PropertyType kRecordView
Definition: types.h:149
static const std::string_view & from_any_value(const AnyValue &value)
Definition: types.h:1145
static const Date & from_any(const Any &value)
Definition: types.h:1096
static PropertyType type()
Definition: types.h:1022
int64_t get_long() const
Definition: types.h:463
const Record & AsRecord() const
Definition: types.h:675
static Any to_any(const std::string &value)
Definition: types.h:1154
static const PropertyType kDouble
Definition: types.h:142
StringPtr()
Definition: types.h:319
std::ostream & operator<<(std::ostream &os, const LoadingStatus &status)
Definition: basic_fragment_loader.cc:22
float AsFloat() const
Definition: types.h:636
static PropertyType type()
Definition: types.h:1191
std::string_view operator*() const
Definition: types.h:349
const Day & AsDay() const
Definition: types.h:655
static void to(const Any &value, LabelKey &out)
Definition: types.h:854
const std::string & AsString() const
Definition: types.h:601
Any(const std::vector< Any > &vec)
Definition: types.h:412
const Table * table
Definition: types.h:296
static Any to_any(const bool &value)
Definition: types.h:940
static constexpr const char * DT_UNSIGNED_INT64
Definition: types.h:49
ostream & operator<<(ostream &os, const gs::BulkLoadMethod &method)
Definition: loading_config.h:234
static void to(const Any &value, uint64_t &out)
Definition: types.h:838
static const float & from_any_value(const AnyValue &value)
Definition: types.h:1225
static PropertyType type()
Definition: types.h:1271
static Any to_any(const uint32_t &value)
Definition: types.h:1005
int hour() const
Definition: types.cc:549
static constexpr const char * DT_UNSIGNED_INT16
Definition: types.h:45
uint32_t hour
Definition: types.h:218
void set_u64(uint64_t v)
Definition: types.h:487
static const uint64_t & from_any(const Any &value)
Definition: types.h:1050
int month() const
Definition: types.cc:545
~StringPtr()
Definition: types.h:343
constexpr PropertyType(impl::PropertyTypeImpl type)
Definition: types.h:102
static constexpr const char * DT_SIGNED_INT32
Definition: types.h:46
static const int64_t & from_any_value(const AnyValue &value)
Definition: types.h:1035
Any(const T &val)
Definition: types.h:423
void set_u16(uint16_t v)
Definition: types.h:542
static constexpr int32_t label_id_offset
Definition: types.h:167
uint32_t ui
Definition: types.h:360
static label_id_t get_label_id(gid_t gid)
Definition: types.cc:501
static const PropertyType kInt64
Definition: types.h:140
bool operator<(const Any &other) const
Definition: types.h:741
void set_float(float v)
Definition: types.h:527
Any(Any &&other)
Definition: types.h:397
static constexpr const char * DT_UNSIGNED_INT8
Definition: types.h:44
static const uint64_t & from_any_value(const AnyValue &value)
Definition: types.h:1055
static PropertyType type()
Definition: types.h:969
static const Day & from_any_value(const AnyValue &value)
Definition: types.h:1126
static PropertyType type()
Definition: types.h:1251
~AnyValue()
Definition: types.h:356
static constexpr const char * DT_BOOL
Definition: types.h:50
static PropertyType Day()
Definition: types.cc:311
bool operator==(const GlobalId &lhs, const GlobalId &rhs)
Definition: types.h:185
Definition: loading_config.h:232
void set_record(Record v)
Definition: types.h:552
label_id_t label_id() const
Definition: types.cc:517
void from_timestamp(int64_t ts)
Definition: types.h:244
static PropertyType type()
Definition: types.h:1230
static const bool & from_any_value(const AnyValue &value)
Definition: types.h:950
Date d
Definition: types.h:367
std::string_view s
Definition: types.h:369
static PropertyType type()
Definition: types.h:1106
uint16_t u16
Definition: types.h:372
AnyValue()
Definition: types.h:355
static PropertyType Double()
Definition: types.cc:305
void set_string_view(std::string_view v)
Definition: types.h:517
static const PropertyType kRecord
Definition: types.h:150
std::size_t hash_value(const grape::EmptyType &value)
Definition: types.h:1318
StringPtr(const StringPtr &other)
Definition: types.h:321
static void to(const Any &value, GlobalId &out)
Definition: types.h:846
static constexpr const char * DT_DAY
Definition: types.h:56
size_t operator()(const gs::GlobalId &value) const
Definition: types.h:1382
static constexpr const char * DT_SIGNED_INT64
Definition: types.h:48
std::string to_string() const
Definition: types.cc:533
Record & operator=(const Record &other)
Definition: types.cc:110
static const PropertyType kBool
Definition: types.h:134
Record()
Definition: types.h:301
size_t size() const
Definition: types.cc:87
void set_record_view(RecordView v)
Definition: types.h:547
bool operator!=(const EmptyType &a, const EmptyType &b)
Definition: types.h:1392
static const uint8_t & from_any(const Any &value)
Definition: types.h:961
uint8_t u8
Definition: types.h:371
static PropertyType Record()
Definition: types.cc:339
void set_day(Day v)
Definition: types.h:512
PropertyType type
Definition: types.h:793
uint32_t day
Definition: types.h:217
float f
Definition: types.h:361
StringPtr & operator=(const StringPtr &other)
Definition: types.h:329
void set_date(Date v)
Definition: types.h:507
uint32_t integer
Definition: types.h:272
static Any to_any(int64_t value)
Definition: types.h:1114
static const Record & from_any_value(const AnyValue &value)
Definition: types.h:1284
bool IsVarchar() const
Definition: types.cc:225
bool operator==(const PropertyType &other) const
Definition: types.cc:198
uint64_t ul
Definition: types.h:363
void from_u32(uint32_t val)
Definition: types.cc:541
GlobalId()
Definition: types.cc:509
std::string PrimitivePropertyTypeToString(PropertyType type)
Definition: types.cc:25
static PropertyType UInt8()
Definition: types.cc:284
uint8_t label_id_t
Definition: types.h:164
static void to(const Any &value, std::string_view &out)
Definition: types.h:893
~Any()
Definition: types.h:455
static const RecordView & from_any(const Any &value)
Definition: types.h:1259
impl::AdditionalTypeInfo additional_type_info
Definition: types.h:98
static Any to_any(const uint8_t &value)
Definition: types.h:956
static PropertyType Int32()
Definition: types.cc:290
RecordView(size_t offset, const Table *table)
Definition: types.h:287
Any & operator=(const Any &other)
Definition: types.h:436
uint16_t max_length
Definition: types.h:91
std::string * ptr
Definition: types.h:352
int year() const
Definition: types.cc:543
LabelKey label_key
Definition: types.h:365
static vid_t get_vid(gid_t gid)
Definition: types.cc:505
static Node encode(const gs::PropertyType &type)
Definition: types.h:1450
static Any to_any(const float &value)
Definition: types.h:1214
std::string to_string() const
Definition: types.h:560
static const PropertyType kStringMap
Definition: types.h:146
static PropertyType RecordView()
Definition: types.cc:335
static const PropertyType kVertexGlobalId
Definition: types.h:147
static PropertyType UInt16()
Definition: types.cc:287
static Any to_any(const int64_t &value)
Definition: types.h:1024
StringPtr(StringPtr &&other)
Definition: types.h:328
static PropertyType Float()
Definition: types.cc:296
std::istream & operator>>(std::istream &is, LoadingStatus &status)
Definition: basic_fragment_loader.cc:35
Day day
Definition: types.h:368
static bool decode(const Node &config, gs::PropertyType &property_type)
Definition: types.h:1399
static const uint16_t & from_any(const Any &value)
Definition: types.h:975
static PropertyType type()
Definition: types.h:955
static const PropertyType kInt32
Definition: types.h:137
std::string_view AsStringView() const
Definition: types.h:641
static PropertyType type()
Definition: types.h:1003
static PropertyType type()
Definition: types.h:1131
GlobalId vertex_gid
Definition: types.h:364
const RecordView & AsRecordView() const
Definition: types.h:670
static const PropertyType kUInt16
Definition: types.h:136
T get_field(int col_id) const
Definition: types.h:1290
LabelKey(label_data_type id)
Definition: types.h:280
static const uint32_t & from_any_value(const AnyValue &value)
Definition: types.h:1016
static Any to_any(const GlobalId &value)
Definition: types.h:1064
size_t size() const
Definition: types.h:309
const Date & AsDate() const
Definition: types.h:650