diff options
author | Xanadu <none@none> | 2010-07-17 02:35:14 +0200 |
---|---|---|
committer | Xanadu <none@none> | 2010-07-17 02:35:14 +0200 |
commit | ec244dbe366e84a93c8fa1ef294af4a2e4e3b0b1 (patch) | |
tree | 3946869a28b7d3ce0548c47efbe74475a358f1c3 /src/server/shared/Utilities/ByteConverter.h | |
parent | bf2b7f207011e24735c9222e23494e08c7178d2f (diff) |
Correctly redo file moves/renames from rev. 8452.
--HG--
branch : trunk
rename : src/server/game/Grids/Cell.h => src/server/game/Grids/Cells/Cell.h
rename : src/server/game/Grids/CellImpl.h => src/server/game/Grids/Cells/CellImpl.h
rename : src/server/framework/GameSystem/Grid.h => src/server/game/Grids/Grid.h
rename : src/server/framework/GameSystem/GridLoader.h => src/server/game/Grids/GridLoader.h
rename : src/server/framework/GameSystem/GridRefManager.h => src/server/game/Grids/GridRefManager.h
rename : src/server/framework/GameSystem/GridReference.h => src/server/game/Grids/GridReference.h
rename : src/server/framework/GameSystem/NGrid.h => src/server/game/Grids/NGrid.h
rename : src/server/game/Grids/GridNotifiers.cpp => src/server/game/Grids/Notifiers/GridNotifiers.cpp
rename : src/server/game/Grids/GridNotifiers.h => src/server/game/Grids/Notifiers/GridNotifiers.h
rename : src/server/game/Grids/GridNotifiersImpl.h => src/server/game/Grids/Notifiers/GridNotifiersImpl.h
rename : src/server/framework/Platform/CompilerDefs.h => src/server/shared/CompilerDefs.h
rename : src/server/framework/Platform/Define.h => src/server/shared/Define.h
rename : src/server/framework/Utilities/CountedReference/Reference.h => src/server/shared/Dynamic/CountedReference/Reference.h
rename : src/server/framework/Utilities/CountedReference/ReferenceHolder.h => src/server/shared/Dynamic/CountedReference/ReferenceHolder.h
rename : src/server/framework/Utilities/CountedReference/ReferenceImpl.h => src/server/shared/Dynamic/CountedReference/ReferenceImpl.h
rename : src/server/framework/Dynamic/FactoryHolder.h => src/server/shared/Dynamic/FactoryHolder.h
rename : src/server/framework/Utilities/LinkedList.h => src/server/shared/Dynamic/LinkedList.h
rename : src/server/framework/Utilities/LinkedReference/RefManager.h => src/server/shared/Dynamic/LinkedReference/RefManager.h
rename : src/server/framework/Utilities/LinkedReference/Reference.h => src/server/shared/Dynamic/LinkedReference/Reference.h
rename : src/server/framework/Dynamic/ObjectRegistry.h => src/server/shared/Dynamic/ObjectRegistry.h
rename : src/server/framework/GameSystem/TypeContainer.h => src/server/shared/Dynamic/TypeContainer.h
rename : src/server/framework/GameSystem/TypeContainerFunctions.h => src/server/shared/Dynamic/TypeContainerFunctions.h
rename : src/server/framework/GameSystem/TypeContainerFunctionsPtr.h => src/server/shared/Dynamic/TypeContainerFunctionsPtr.h
rename : src/server/framework/GameSystem/TypeContainerVisitor.h => src/server/shared/Dynamic/TypeContainerVisitor.h
rename : src/server/framework/Utilities/TypeList.h => src/server/shared/Dynamic/TypeList.h
rename : src/server/framework/Utilities/UnorderedMap.h => src/server/shared/Dynamic/UnorderedMap.h
rename : src/server/framework/Policies/CreationPolicy.h => src/server/shared/Policies/CreationPolicy.h
rename : src/server/framework/Policies/ObjectLifeTime.cpp => src/server/shared/Policies/ObjectLifeTime.cpp
rename : src/server/framework/Policies/ObjectLifeTime.h => src/server/shared/Policies/ObjectLifeTime.h
rename : src/server/framework/Policies/Singleton.h => src/server/shared/Policies/Singleton.h
rename : src/server/framework/Policies/SingletonImp.h => src/server/shared/Policies/SingletonImp.h
rename : src/server/framework/Policies/ThreadingModel.h => src/server/shared/Policies/ThreadingModel.h
rename : src/server/framework/Utilities/Callback.h => src/server/shared/Threading/Callback.h
rename : src/server/framework/Utilities/ByteConverter.h => src/server/shared/Utilities/ByteConverter.h
rename : src/server/framework/Utilities/EventProcessor.cpp => src/server/shared/Utilities/EventProcessor.cpp
rename : src/server/framework/Utilities/EventProcessor.h => src/server/shared/Utilities/EventProcessor.h
rename : src/server/framework/Network/SocketDefines.h => src/server/worldserver/RemoteAccess/SocketDefines.h
Diffstat (limited to 'src/server/shared/Utilities/ByteConverter.h')
-rw-r--r-- | src/server/shared/Utilities/ByteConverter.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/server/shared/Utilities/ByteConverter.h b/src/server/shared/Utilities/ByteConverter.h new file mode 100644 index 00000000000..f8b6bd72498 --- /dev/null +++ b/src/server/shared/Utilities/ByteConverter.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> + * + * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TRINITY_BYTECONVERTER_H +#define TRINITY_BYTECONVERTER_H + +/** ByteConverter reverse your byte order. This is use + for cross platform where they have different endians. + */ + +#include<Platform/Define.h> +#include<algorithm> + +namespace ByteConverter +{ + template<size_t T> + inline void convert(char *val) + { + std::swap(*val, *(val + T - 1)); + convert<T - 2>(val + 1); + } + + template<> inline void convert<0>(char *) {} + template<> inline void convert<1>(char *) {} // ignore central byte + + template<typename T> inline void apply(T *val) + { + convert<sizeof(T)>((char *)(val)); + } +} + +#if TRINITY_ENDIAN == TRINITY_BIGENDIAN +template<typename T> inline void EndianConvert(T& val) { ByteConverter::apply<T>(&val); } +template<typename T> inline void EndianConvertReverse(T&) { } +#else +template<typename T> inline void EndianConvert(T&) { } +template<typename T> inline void EndianConvertReverse(T& val) { ByteConverter::apply<T>(&val); } +#endif + +template<typename T> void EndianConvert(T*); // will generate link error +template<typename T> void EndianConvertReverse(T*); // will generate link error + +inline void EndianConvert(uint8&) { } +inline void EndianConvert( int8&) { } +inline void EndianConvertReverse(uint8&) { } +inline void EndianConvertReverse( int8&) { } + +#endif + |