Types.h

00001 /*
00002  * This source file is part of libRocket, the HTML/CSS Interface Middleware
00003  *
00004  * For the latest information, see http://www.librocket.com
00005  *
00006  * Copyright (c) 2008-2010 CodePoint Ltd, Shift Technology Ltd
00007  *
00008  * Permission is hereby granted, free of charge, to any person obtaining a copy
00009  * of this software and associated documentation files (the "Software"), to deal
00010  * in the Software without restriction, including without limitation the rights
00011  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00012  * copies of the Software, and to permit persons to whom the Software is
00013  * furnished to do so, subject to the following conditions:
00014  *
00015  * The above copyright notice and this permission notice shall be included in
00016  * all copies or substantial portions of the Software.
00017  * 
00018  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00019  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00020  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00021  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00022  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00023  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00024  * THE SOFTWARE.
00025  *
00026  */
00027 
00028 #ifndef ROCKETCORETYPES_H
00029 #define ROCKETCORETYPES_H
00030 
00031 #include <Rocket/Core/Debug.h>
00032 #include <float.h>
00033 #include <limits.h>
00034 #include <string>
00035 #include <map>
00036 #include <set>
00037 #include <vector>
00038 #include <Rocket/Core/Platform.h>
00039 
00040 namespace Rocket {
00041 namespace Core {
00042 
00043 // Define commonly used basic types.
00044 typedef unsigned char byte;
00045 typedef unsigned short word;
00046 typedef double Time;
00047 typedef float TimeDelta;
00048 typedef unsigned int Hash;
00049 typedef unsigned short TypeHash;
00050 typedef void* ScriptObject;
00051 
00052 }
00053 }
00054 
00055 #ifdef ROCKET_PLATFORM_WIN32
00056 typedef unsigned __int64 uint64_t;
00057 #else
00058 #include <inttypes.h>
00059 #endif
00060 
00061 #include <Rocket/Core/Colour.h>
00062 #include <Rocket/Core/Vector2.h>
00063 #include <Rocket/Core/String.h>
00064 
00065 namespace Rocket {
00066 namespace Core {
00067 
00068 // Define NULL as zero.
00069 #if !defined NULL
00070 #define NULL 0
00071 #endif
00072 
00073 // Default colour types.
00074 typedef Colour< float, 1 > Colourf;
00075 typedef Colour< byte, 255 > Colourb;
00076 typedef Vector2< float > Vector2f;
00077 typedef Vector2< int > Vector2i;
00078         
00079 
00080 class Element;
00081 class Dictionary;
00082 
00083 // Types for external interfaces.
00084 typedef void* FileHandle;
00085 typedef void* TextureHandle;
00086 typedef void* CompiledGeometryHandle;
00087 typedef void* DecoratorDataHandle;
00088 
00089 // List of elements.
00090 typedef std::vector< Element* > ElementList;
00091 typedef std::set< String > PseudoClassList;
00092 typedef std::set< String > PropertyNameList;
00093 typedef std::set< String > AttributeNameList;
00094 typedef Dictionary ElementAttributes;
00095 
00096 }
00097 }
00098 
00099 #endif