-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathobject_impl.cpp
More file actions
64 lines (55 loc) · 2.07 KB
/
object_impl.cpp
File metadata and controls
64 lines (55 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
Copyright (C) 2015-present The DotCpp Authors.
This file is part of .C++, a native C++ implementation of
popular .NET class library APIs developed to facilitate
code reuse between C# and C++.
http://github.com/dotcpp/dotcpp (source)
http://dotcpp.org (documentation)
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.
*/
#include <dot/precompiled.hpp>
#include <dot/implement.hpp>
#include <dot/system/object_impl.hpp>
#include <dot/system/object.hpp>
#include <dot/system/string.hpp>
#include <dot/system/type.hpp>
namespace dot
{
/// Determines whether the specified object is equal to the current object.
///
/// Default implementation in object compares pointers. Derived classes
/// can override this method to compare by value.
bool object_impl::equals(object obj)
{
return this == &(*obj);
}
/// Serves as the default hash function.
///
/// Default implementation in object uses hash based on the pointer.
/// Derived classes can override this method to provide value based hash.
///
/// Methods Equals() and hash_code() must always be overriden together
/// to avoid the situation when objects are equal but hash is not.
size_t object_impl::hash_code()
{
return size_t(this);
}
/// string that represents the current object.
///
/// Default implementation in object returns full name
/// of the class by calling get_type().FullName. Derived types
/// can override this method to provide custom conversion
/// to string.
string object_impl::to_string()
{
return get_type()->full_name();
}
}