MyGUI
3.2.0
|
00001 00006 /* 00007 This file is part of MyGUI. 00008 00009 MyGUI is free software: you can redistribute it and/or modify 00010 it under the terms of the GNU Lesser General Public License as published by 00011 the Free Software Foundation, either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 MyGUI is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License 00020 along with MyGUI. If not, see <http://www.gnu.org/licenses/>. 00021 */ 00022 00023 #include "MyGUI_Precompiled.h" 00024 #include "MyGUI_Any.h" 00025 00026 namespace MyGUI 00027 { 00028 00029 Any::AnyEmpty Any::Null; 00030 00031 Any::Any() : 00032 mContent(nullptr) 00033 { 00034 } 00035 00036 Any::Any(const Any::AnyEmpty& value) : 00037 mContent(nullptr) 00038 { 00039 } 00040 00041 Any::Any(const Any& other) : 00042 mContent(other.mContent ? other.mContent->clone() : nullptr) 00043 { 00044 } 00045 00046 Any::~Any() 00047 { 00048 delete mContent; 00049 } 00050 00051 Any& Any::swap(Any& rhs) 00052 { 00053 std::swap(mContent, rhs.mContent); 00054 return *this; 00055 } 00056 00057 Any& Any::operator = (const Any::AnyEmpty& rhs) 00058 { 00059 delete mContent; 00060 mContent = nullptr; 00061 return *this; 00062 } 00063 00064 Any& Any::operator = (const Any& rhs) 00065 { 00066 Any(rhs).swap(*this); 00067 return *this; 00068 } 00069 00070 bool Any::empty() const 00071 { 00072 return !mContent; 00073 } 00074 00075 #ifndef MYGUI_RTTI_DISABLE_TYPE_INFO 00076 const std::type_info& Any::getType() const 00077 { 00078 return mContent ? mContent->getType() : typeid(void); 00079 } 00080 #endif 00081 00082 void* Any::castUnsafe() const 00083 { 00084 return mContent ? static_cast<Any::Holder<void*> *>(this->mContent)->held : nullptr; 00085 } 00086 00087 } // namespace MyGUI