--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmuifw_plat/osn_global_api/inc/osn/osntypes.h Wed Sep 01 12:23:18 2010 +0100
@@ -0,0 +1,723 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Defines basic types.
+ *
+*/
+
+
+
+#ifndef OSNTYPES_H
+#define OSNTYPES_H
+
+namespace osncore
+{
+
+/**
+ * Defines a signed 8 bit integer.
+ */
+typedef signed char int8;
+
+/**
+ * Defines an unsigned 8 bit integer.
+ */
+typedef unsigned char uint8;
+
+/**
+ * Defines a signed 16 bit integer.
+ */
+typedef signed short int int16;
+
+/**
+ * Defines an unsigned 16 bit integer.
+ */
+typedef unsigned short int uint16;
+
+/**
+ * Defines an signed 32 bit integer.
+ */
+typedef signed long int int32;
+
+/**
+ * Defines an unsigned 32 bit integer.
+ */
+typedef unsigned long int uint32;
+
+/**
+ * Defines a signed 64 bit integer.
+ */
+typedef signed long long int64;
+
+/**
+ * Defines an unsigned 64 bit integer.
+ */
+typedef unsigned long long uint64;
+
+/**
+ * Defines a 32 bit floating point number.
+ */
+typedef float float32;
+
+/**
+ * Defines a 64 bit floating point number.
+ */
+typedef double float64;
+
+/**
+ * Defines an 8 bit character (usually ASCII).
+ */
+typedef char char8;
+
+/**
+ * Defines an system dependent unsigned int
+ * (in 32 bit system it is 4 bytes and in 16 bit system it is 2 bytes).
+ */
+typedef unsigned int uint;
+
+/**
+ * Defines an 8 bit unsigned char
+ */
+typedef unsigned char uchar;
+
+
+
+/**
+ * Defines a 16 bit character (usually unicode).
+ */
+#if defined(__VC32__)
+typedef uint16 char16; //here a uint16 is needed because the vc
+//version of L"..." returns an unsigned short
+#elif defined(__CW32__)
+typedef uint16 char16; //the same like for __VC32__
+#elif defined(__GCC32__)
+typedef __wchar_t char16; //when using gcc the wchar_t type must be
+//used or else L in front of ASCI strings
+//(e.g. L"xyz") can't be used to assign a
+//unicode string to a char16[]
+#elif defined(__ARMCC_VERSION) // RVCT ARM COMPILER
+typedef wchar_t char16;
+#elif defined(__GCCE__)
+typedef wchar_t char16;
+#elif defined(__GNUC__)
+typedef uint16 char16;
+#endif
+
+/**
+ * Defines a 32 bit boolean.
+ */
+typedef int32 bool32;
+
+/**
+ * Defines the return code data type.
+ */
+typedef int32 ReturnCode;
+
+
+class CPoint;
+
+/**
+ * @class CSize osntypes.h "osn/osntypes.h"
+ * Defines a two dimensional size data type.
+ *
+ * @since S60 5.0
+ * @status Draft
+ * @interfaces CSize
+ */
+class CSize
+ {
+public:
+ /**
+ * Default constructor, initializing the mX and mY members to zero.
+ */
+ inline CSize();
+
+ /**
+ * Parameterized constructor.
+ *
+ * @param aX The first dimension of the size ( usually the width ).
+ * @param aY The second dimension of the size ( usually the height ).
+ */
+ inline CSize( int32 aX, int32 aY );
+
+ /**
+ * Copy constructor.
+ *
+ * @param aSize The size object to be copied.
+ */
+ inline CSize( const CSize& aSize );
+
+ /**
+ * Gets a CPoint whose coordinates are the width and height of this
+ * CSize.
+ *
+ * @return The coordinates of this CSize converted to a point.
+ */
+ inline CPoint AsPoint();
+
+ /**
+ * Compares this CSize with the specified CSize for equality.
+ *
+ * For two CSizes to be equal, both their width and height values
+ * must be equal.
+ *
+ * @param aSize The CSize to be compared with this CSize.
+ *
+ * @return TRUE, if the sizes are equal, FALSE otherwise.
+ */
+ inline bool32 operator==( const CSize& aSize ) const;
+
+ /**
+ * Compares this CSize with the specified CSize for inequality.
+ *
+ * For two CSize to be unequal, either their width or height values
+ * must be different.
+ *
+ * @param aSize The CSize to be compared with this CSize.
+ *
+ * @return TRUE, if the sizes are different, FALSE
+ * otherwise.
+ */
+ inline bool32 operator!=( const CSize& aSize ) const;
+
+ /**
+ * CSize addition assignment operator.
+ *
+ * The operator adds the specified CSize to this CSize, and
+ * assigns the result back to this CSize.
+ *
+ * @param aSize The CSize to be added.
+ *
+ * @return A reference to this point object.
+ */
+ inline CSize& operator+=( const CSize& aSize );
+
+ /**
+ * CSize subtraction assignment operator.
+ *
+ * The operator substracts the specified CSize from this CSize,
+ * and assigns the result back to this CSize.
+ *
+ * @param aSize The CSize to be substracted.
+ *
+ * @return A reference to this point object.
+ */
+ inline CSize& operator-=( const CSize& aSize );
+
+ int32 mX; ///< The first dimension.
+ int32 mY; ///< The second dimension.
+ };
+
+/**
+ * CSize addition operator.
+ *
+ * Calculates the sum of two CSize objects
+ *
+ * @param aLeftHandSide The left addend.
+ * @param aRightHandSide The right addend.
+ *
+ * @return The sum.
+ *
+ */
+inline const CSize operator+( const CSize& aLeftHandSide,
+ const CSize& aRightHandSide );
+
+/**
+ * CSize substraction operator.
+ *
+ * Calculates the difference of two CSize objects
+ *
+ * @param aLeftHandSide The minuend.
+ * @param aRightHandSide The subtrahend.
+ *
+ * @return The difference.
+ *
+ */
+inline const CSize operator-( const CSize& aLeftHandSide,
+ const CSize& aRightHandSide );
+
+
+/**
+ * @class CPoint osntypes.h "osn/osntypes.h"
+ * Defines a two dimensional point data type.
+ *
+ * @since S60 5.0
+ * @status Draft
+ * @interfaces CPoint
+ */
+class CPoint
+ {
+public:
+ /**
+ * Default constructor, initializing the mX and mY members to zero.
+ */
+ inline CPoint( );
+
+ /**
+ * Parameterized constructor.
+ *
+ * @param aX The first coordinate of the point.
+ * @param aY The second coordinate of the point.
+ */
+ inline CPoint( int32 aX, int32 aY );
+
+ /**
+ * Copy constructor.
+ *
+ * @param aPoint The point object to be copied.
+ */
+ inline CPoint( const CPoint& aPoint );
+
+ /**
+ * Gets a CSize whose width and height are the coordinates of this
+ * CPoint.
+ *
+ * @return The width and height of this CPoint converted to a size.
+ */
+ inline CSize AsSize();
+
+ /**
+ * Compares two points for equality.
+ *
+ * For two points to be equal, both their x and y coordinate values
+ * must be equal.
+ *
+ * @param aPoint The point to be compared with this point.
+ *
+ * @return TRUE, if the points are equal, FALSE otherwise.
+ */
+ inline bool32 operator==( const CPoint& aPoint ) const;
+
+ /**
+ * Compares two points for inequality.
+ *
+ * For two points to be unequal, either their x or their y
+ * coordinate values must be different.
+ *
+ * @param aPoint The point to be compared with this point.
+ *
+ * @return TRUE, if the points are different, FALSE
+ * otherwise.
+ */
+ inline bool32 operator!=( const CPoint& aPoint ) const;
+
+ /**
+ * CPoint addition assignment operator.
+ *
+ * The operator adds the specified CPoint to this CPoint, and
+ * assigns the result back to this CPoint.
+ *
+ * @param aPoint The CPoint to be added.
+ *
+ * @return A reference to this point object.
+ */
+ inline CPoint& operator+=( const CPoint& aPoint );
+
+ /**
+ * CPoint subtraction assignment operator.
+ *
+ * The operator substracts the specified CPoint from this CPoint,
+ * and assigns the result back to this CPoint.
+ *
+ * @param aPoint The CPoint to be substracted.
+ *
+ * @return A reference to this point object.
+ */
+ inline CPoint& operator-=( const CPoint& aPoint );
+
+ int32 mX; ///< The x-coordinate position of the point.
+ int32 mY; ///< The y-coordinate position of the point.
+ };
+
+/**
+ * CPoint addition operator.
+ *
+ * Calculates the sum of two CPoint objects
+ *
+ * @param aLeftHandSide The left addend.
+ * @param aRightHandSide The right addend.
+ *
+ * @return The sum.
+ *
+ */
+inline const CPoint operator+( const CPoint& aLeftHandSide,
+ const CPoint& aRightHandSide );
+
+/**
+ * CPoint substraction operator.
+ *
+ * Calculates the difference of two CPoint objects
+ *
+ * @param aLeftHandSide The minuend.
+ * @param aRightHandSide The subtrahend.
+ *
+ * @return The difference.
+ *
+ */
+inline const CPoint operator-( const CPoint& aLeftHandSide,
+ const CPoint& aRightHandSide );
+
+/**
+ * @class CRect osntypes.h "osn/osntypes.h"
+ * Defines a two dimensional rectangle data type.
+ *
+ * @since S60 5.0
+ * @status Draft
+ * @interfaces CRect
+ */
+class CRect
+ {
+public:
+ /**
+ * Default constructor, initializing the coordinates of the top left
+ * corner and the size to ( 0,0 ).
+ */
+ inline CRect();
+
+ /**
+ * Parameterized constructor.
+ *
+ * @param aX The first coordinate of the rectangle's top left point.
+ * @param aY The second coordinate of the rectangle's top left
+ * point.
+ * @param aWidth The width of the rectangle.
+ * @param aHeight The height of the rectangle.
+ */
+ inline CRect( int32 aX, int32 aY, int32 aWidth, int32 aHeight );
+
+ /**
+ * Parameterized constructor.
+ *
+ * Constructs the rectangle with a point ( top left corner ) and a
+ * size.
+ *
+ * @param aTopLeft The top left point of the rectangle.
+ * @param aSize The size of the rectangle.
+ */
+ inline CRect( const CPoint& aTopLeft, const CSize& aSize );
+
+ /**
+ * Parameterized constructor.
+ *
+ * Constructs the rectangle with a size. The top left corner is set
+ * to (0,0).
+ *
+ * @param aSize The size of the rectangle.
+ */
+ inline CRect( const CSize& aSize );
+
+ /**
+ * Copy constructor.
+ *
+ * @param aRect The rectangle object to be copied.
+ */
+ inline CRect( const CRect& aRect );
+
+ /**
+ * Determines whether the area covered by the rectangle is zero.
+ *
+ * @return TRUE, if the rectangle is empty, FALSE
+ * otherwise.
+ */
+ inline bool32 IsEmpty() const;
+
+ /**
+ * Tests whether this rectangle overlaps with the specified
+ * rectangle.
+ *
+ * Two rectangles overlap if any point is located within both
+ * rectangles. There is no intersection if two adjacent sides touch
+ * without overlapping, or if either rectangle is empty.
+ *
+ * @param aRect The rectangle to compare with this rectangle for an
+ * intersection.
+ *
+ * @return TRUE, if the two rectangles overlap, FALSE
+ * otherwise.
+ */
+ inline bool32 Intersects( CRect aRect ) const;
+
+ /**
+ * Tests whether this normalized rectangle overlaps with the
+ * specified normalized rectangle.
+ *
+ * Two rectangles overlap if any point is located within both
+ * rectangles. There is no intersection if two adjacent sides touch
+ * without overlapping, or if either rectangle is empty.
+ * If one of the rectangles isn't normalized, then the function also
+ * returns FALSE,
+ *
+ * Because of performance reasons this function should favored over
+ * the Intersects function, when it is certain that both rectangles
+ * are normalized.
+ *
+ * @param aRect The rectangle to compare with this rectangle for an
+ * intersection.
+ *
+ * @return TRUE, if the two rectangles are normalized and
+ * overlap, FALSE otherwise.
+ */
+ inline bool32 FastIntersects( const CRect& aRect ) const;
+
+ /**
+ * Gets the normalized area of intersection between this rectangle
+ * and the specified rectangle, and assigns it to this rectangle.
+ *
+ * If the two rectangles do not intersect, then, on return, this
+ * rectangle is set to be empty.
+ *
+ * @param aRect The rectangle to be used with this rectangle to get
+ * the area of intersection.
+ */
+ inline void Intersection( CRect aRect );
+
+ /**
+ * Gets the normalized area of intersection between this normalized
+ * rectangle and the specified normalized rectangle, and assigns it
+ * to this rectangle.
+ *
+ * If the two rectangles do not intersect or are not normalized,
+ * then, on return, this rectangle is set to be empty.
+ *
+ * Because of performance reasons this function should be favored
+ * over the Intersection() function, when it is certain that both
+ * rectangles are normalized.
+ *
+ * @param aRect The rectangle to be used with this rectangle to get
+ * the area of intersection.
+ */
+ inline void FastIntersection( const CRect& aRect );
+
+ /**
+ * Ensures that the rectangle's width and height have positive
+ * values.
+ *
+ * For example, if the rectangle's co-ordinates are such that the
+ * top is below the bottom, or the right hand side is to the left of
+ * the left hand side, normalisation swaps the co-ordinates of the
+ * top and bottom or of the left and right.
+ */
+ inline void Normalize();
+
+ /**
+ * Tests whether the rectangle is normalized.
+ *
+ * A rectangle is normalized, when its width and height are both
+ * greater than or equal to zero.
+ */
+ inline bool32 IsNormalized() const;
+
+ /**
+ * Compares two rectangles for equality.
+ *
+ * For two rectangles to be equal, the coordinates of their top left
+ * corners and their sizes must be equal.
+ *
+ * @param aRect The rectangle to compare with this rectangle.
+ *
+ * @return TRUE, if the rectangles are equal, FALSE
+ * otherwise.
+ */
+ inline bool32 operator==( const CRect& aRect ) const;
+
+ /**
+ * Compares two rectangles for inequality.
+ *
+ * Two rectangles are unequal if the coordinates of their top left
+ * corners or their sizes differ.
+ *
+ * @param aRect The rectangle to compare with this rectangle.
+ *
+ * @return TRUE, if the rectangles are different, FALSE
+ * otherwise.
+ */
+ inline bool32 operator!=( const CRect& aRect ) const;
+
+ /**
+ * CPoint addition assignment operator.
+ *
+ * The operator moves this CRect's offset by the given point's
+ * coordinates.
+ *
+ * @param aPoint The CPoint to be added.
+ *
+ * @return A reference to this rectangle object.
+ */
+ inline CRect& operator+=( const CPoint& aPoint );
+
+ /**
+ * CPoint subtraction assignment operator.
+ *
+ * The operator moves this CRect's offset by the given point's
+ * coordinates.
+ *
+ * @param aPoint The CPoint to be substracted.
+ *
+ * @return A reference to this rectangle object.
+ */
+ inline CRect& operator-=( const CPoint& aPoint );
+
+ /**
+ * CSize addition assignment operator.
+ *
+ * The operator increases this CRect's size by the given size.
+ *
+ * @param aSize The CSize to be added.
+ *
+ * @return A reference to this rectangle object.
+ */
+ inline CRect& operator+=( const CSize& aSize );
+
+ /**
+ * CSize subtraction assignment operator.
+ *
+ * The operator decreases this CRect's size by the given size.
+ *
+ * @param aSize The CSize to be substracted.
+ *
+ * @return A reference to this rectangle object.
+ */
+ inline CRect& operator-=( const CSize& aSize );
+
+ int32 mX; ///< The position of the left-hand side of the
+ ///< rectangle.
+ int32 mY; ///< The position of the top side of the rectangle.
+ int32 mWidth; ///< The width of the rectangle.
+ int32 mHeight; ///< The height of the rectangle.
+ };
+
+/**
+ * CRect + CPoint addition operator.
+ *
+ * The operator copies the CRect and moves the copy's offset by the given
+ * point's coordinates.
+ *
+ * @param aRect The CRect addend.
+ * @param aPoint The CPoint to be added.
+ *
+ * @return The moved CRect.
+ *
+ */
+inline const CRect operator+( const CRect& aRect,
+ const CPoint& aPoint );
+
+/**
+ * CRect - CPoint subtraction operator.
+ *
+ * The operator copies the CRect and moves the copy's offset by the
+ * given point's coordinates.
+ *
+ * @param aRect The CRect addend.
+ * @param aPoint The CPoint to be substracted.
+ *
+ * @return The moved CRect.
+ *
+ */
+inline const CRect operator-( const CRect& aRect,
+ const CPoint& aPoint );
+
+/**
+ * CRect + CSize addition operator.
+ *
+ * The operator copies the CRect and resizes the copy by the given size.
+ *
+ * @param aRect The CRect addend.
+ * @param aSize The CSize to be added.
+ *
+ * @return The resized CRect.
+ *
+ * @ingroup Runtime
+ */
+inline const CRect operator+( const CRect& aRect,
+ const CSize& aSize );
+
+/**
+ * CRect - CSize subtraction operator.
+ *
+ * The operator copies the CRect and resizes the copy by the given size.
+ *
+ * @param aRect The CRect minuend.
+ * @param aSize The CSize to be substracted.
+ *
+ * @return The resized CRect.
+ *
+ * @ingroup Runtime
+ */
+inline const CRect operator-( const CRect& aRect,
+ const CSize& aSize );
+
+/**
+ * Defines maximum value for a int8 variable
+ */
+const int8 MAX_INT8 = 0x7f;
+
+/**
+ * Defines minimum value for a int8 variable
+ */
+const int8 MIN_INT8 = 0x80;
+
+/**
+ * Defines maximum value for a uint8 variable
+ */
+const uint8 MAX_UINT8 = 0xffu;
+
+/**
+ * Defines maximum value for a int16 variable
+ */
+const int16 MAX_INT16 = 0x7fff;
+
+/**
+ * Defines minimum value for a int16 variable
+ */
+const int16 MIN_INT16 = 0x8000;
+
+/**
+ * Defines maximum value for a uint16 variable
+ */
+const uint16 MAX_UINT16 = 0xffffu;
+
+/**
+ * Defines maximum value for a int32 variable
+ */
+const int32 MAX_INT32 = 0x7fffffff;
+
+/**
+ * Defines minimum value for a int32 variable
+ */
+const int32 MIN_INT32 = 0x80000000;
+
+/**
+ * Defines maximum value for a uint32 variable
+ */
+const uint32 MAX_UINT32 = 0xffffffffu;
+
+
+/**
+ * Maximum path/filename length including a NULL terminator. A char16*
+ * array of this size is guaranteed to accomodate all filenames returned
+ * by the system.
+ */
+const uint32 MAX_PATH_LENGTH = 257;
+
+/// Filename path delimiter.
+const char16 PATH_DELIMITER = '\\';
+
+/// Filename drive delimiter.
+const char16 DRIVE_DELIMITER = ':';
+
+/// Filename extension delimiter.
+const char16 EXTENSION_DELIMITER = '.';
+
+
+#include <osn/osntypes.inl>
+}
+#endif