2013-05-31 15:58:00 +02:00
|
|
|
// Copyright (C) XFX Team
|
2013-05-05 18:18:41 +02:00
|
|
|
// All rights reserved.
|
|
|
|
//
|
|
|
|
// Redistribution and use in source and binary forms, with or without
|
|
|
|
// modification, are permitted provided that the following conditions are met:
|
|
|
|
//
|
|
|
|
// * Redistributions of source code must retain the above copyright
|
|
|
|
// notice, this list of conditions and the following disclaimer.
|
|
|
|
// * Redistributions in binary form must reproduce the above copyright
|
|
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
|
|
// documentation and/or other materials provided with the distribution.
|
|
|
|
// * Neither the name of the copyright holder nor the names of any
|
|
|
|
// contributors may be used to endorse or promote products derived from
|
|
|
|
// this software without specific prior written permission.
|
|
|
|
//
|
|
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
|
|
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
|
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
|
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
// POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
#include <System/Object.h>
|
2013-06-02 14:32:43 +02:00
|
|
|
#include <System/String.h>
|
2013-07-12 21:30:13 +02:00
|
|
|
#include <System/Type.h>
|
2013-05-05 18:18:41 +02:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
namespace System
|
|
|
|
{
|
2014-04-20 13:19:50 +02:00
|
|
|
const Type ObjectTypeInfo("Object", "System::Object", TypeCode::Object);
|
2013-07-12 21:30:13 +02:00
|
|
|
|
2013-05-05 18:18:41 +02:00
|
|
|
bool Object::Equals(Object const * const obj) const
|
|
|
|
{
|
|
|
|
return is(this, obj);
|
|
|
|
}
|
|
|
|
|
2013-05-30 21:42:33 +02:00
|
|
|
bool Object::Equals(Object const * const objA, Object const * const objB)
|
2013-05-05 18:18:41 +02:00
|
|
|
{
|
2013-05-30 21:42:33 +02:00
|
|
|
return ((objA == objB) || ((objA) && (objB) && objA->Equals(objB)) || ((!objA) && (!objB)));
|
2013-05-05 18:18:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
int Object::GetHashCode() const
|
|
|
|
{
|
|
|
|
return (int)this;
|
|
|
|
}
|
|
|
|
|
2014-04-20 13:19:50 +02:00
|
|
|
const Type& Object::GetType()
|
2013-05-05 18:18:41 +02:00
|
|
|
{
|
2013-07-12 21:30:13 +02:00
|
|
|
return ObjectTypeInfo;
|
2013-05-05 18:18:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool is(Object const * const obj1, Object const * const obj2)
|
|
|
|
{
|
|
|
|
if ((obj1 == NULL) && (obj2 == NULL))
|
2014-07-14 15:03:46 +02:00
|
|
|
{
|
2013-05-05 18:18:41 +02:00
|
|
|
return true;
|
2014-07-14 15:03:46 +02:00
|
|
|
}
|
2013-05-05 18:18:41 +02:00
|
|
|
|
|
|
|
if ((obj1 != NULL) && (obj2 != NULL))
|
|
|
|
{
|
|
|
|
return (obj1->GetType() == obj2->GetType());
|
|
|
|
}
|
2013-05-30 21:42:33 +02:00
|
|
|
|
|
|
|
return false;
|
2013-05-05 18:18:41 +02:00
|
|
|
}
|
2013-05-31 15:58:00 +02:00
|
|
|
|
2014-07-14 15:03:46 +02:00
|
|
|
bool Object::ReferenceEquals(const Object& objA, const Object& objB)
|
2013-05-31 15:58:00 +02:00
|
|
|
{
|
2014-07-14 15:03:46 +02:00
|
|
|
return (&objA == &objB);
|
|
|
|
}
|
2013-05-31 15:58:00 +02:00
|
|
|
|
2014-07-14 15:03:46 +02:00
|
|
|
const String Object::ToString() const
|
|
|
|
{
|
|
|
|
return "Object";
|
2013-05-31 15:58:00 +02:00
|
|
|
}
|
2013-05-05 18:18:41 +02:00
|
|
|
}
|