--- a/mds_plat/metadata_engine_api/inc/mderange.inl Fri Sep 03 10:57:50 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-#ifndef MDERANGE_INL_
-#define MDERANGE_INL_
-
-/**
- * The TMdERange template is used for representing value ranges of various
- * types. A range is composed of an upper limit, a lower limit, and type
- * that describe how the limits are to be interpreted.
- *
- * Value ranges are used with CMdERangePropertyCondition nodes to define
- * a range of values that the condition matches. Basic operations such as
- * "greater than", "equals to", and "between" are all implemented using
- * value ranges. There are also more complex ranges that can be used in
- * loops.
- *
- * TMdERange is the base template for many different kind of value ranges.
- * However, all ranges can be processed with the Min(), Max(), and Type()
- * methods, regardless of any extra data defined by a specialized range type.
- */
-template <class T>
-class TMdERange
- {
-public:
-
- /* Methods. */
-
- /**
- * Returns the lower limit of the range.
- *
- * @return The minimum value.
- */
- inline const T& Min() const
- {
- return iMin;
- }
-
- /**
- * Returns the upper limit of the range.
- *
- * @return The maximum value.
- */
- inline const T& Max() const
- {
- return iMax;
- }
-
- /**
- * Returns the type of the range.
- *
- * @return type
- */
- inline const TMdERangeType& Type() const
- {
- return iType;
- }
-
- /**
- * Sets the lower limit of the range.
- *
- * @param aMin The minimum value.
- */
- inline void SetMin(const T& aMin)
- {
- iMin = aMin;
- }
-
- /**
- * Sets the upper limit of the range.
- *
- * @param aMax The maximum value.
- */
- inline void SetMax(const T& aMax)
- {
- iMax = aMax;
- }
-
- /**
- * Sets the type of the range.
- *
- * @param aType The new type.
- */
- inline void SetType(TMdERangeType aType)
- {
- iType = aType;
- }
-
- /**
- * Get required size of serialized buffer when this is serialized.
- *
- * @return required size of serialized buffer
- */
- TUint32 RequiredBufferSize()
- {
- return TMdESerializeRange::RequiredBufferSize( sizeof(T) );
- }
-
- /**
- * Serialize own data to serialized buffer (correct position must be set
- * before calling) and return new position of serialized buffer.
- *
- * @param aBuffer serialized buffer.
- */
- void SerializeL(CMdCSerializationBuffer& aBuffer)
- {
- TMdESerializeRange::SerializeL( aBuffer, iType, &iMin, &iMax, sizeof(T) );
- }
-
- /* Constructor. */
- TMdERange(const T& aMin, const T& aMax, TMdERangeType aType = EMdERangeTypeAny)
- : iType(aType), iMin(aMin), iMax(aMax)
- {
- }
-
- /**
- * Test if value is in the range.
- *
- * @param aValue Tested value.
- */
- TBool InRange(const T& aValue)
- {
- switch( iType )
- {
- case EMdERangeTypeAny:
- {
- // always match
- return ETrue;
- }
- case EMdERangeTypeEqual:
- {
- return ( aValue == iMin );
- }
- case EMdERangeTypeNotEqual:
- {
- return ( aValue != iMin );
- }
- case EMdERangeTypeLess:
- {
- return ( aValue < iMax );
- }
- case EMdERangeTypeLessOrEqual:
- {
- return ( aValue <= iMax );
- }
- case EMdERangeTypeGreater:
- {
- return ( aValue > iMin );
- }
- case EMdERangeTypeGreaterOrEqual:
- {
- return ( aValue >= iMin );
- }
- case EMdERangeTypeBetween:
- {
- // edges belong to range
- return ( ( iMin <= aValue ) && ( aValue <= iMax ) );
- }
- case EMdERangeTypeNotBetween:
- {
- // edges belong to range
- return ( ( iMin > aValue ) || ( aValue > iMax ) );
- }
- default:
- {
- // should never happen
- return EFalse;
- }
- }
- }
-
-private:
-
- /** Type. */
- TMdERangeType iType;
-
- /** Beginning of the range. */
- T iMin;
-
- /** End of the range. */
- T iMax;
- };
-
-
-/**
- * Value range that covers everything.
- */
-template <class T>
-class TMdEAny : public TMdERange<T>
- {
-public:
- TMdEAny()
- : TMdERange<T>(T(0), T(0), EMdERangeTypeAny) {}
- };
-
-
-/**
- * TMdEEquals defines a range that contains only a single point. Thus it
- * functions as an equivalence operator.
- */
-template <class T>
-class TMdEEqual : public TMdERange<T>
- {
-public:
- TMdEEqual(const T& aValue)
- : TMdERange<T>(aValue, aValue, EMdERangeTypeEqual) {}
- };
-
-/**
- * Range that contains all values except for one point.
- */
-template <class T>
-class TMdENotEqual : public TMdERange<T>
- {
-public:
- TMdENotEqual(const T& aValue)
- : TMdERange<T>(aValue, aValue, EMdERangeTypeNotEqual) {}
- };
-
-/**
- * Less-than range.
- */
-template <class T>
-class TMdELess : public TMdERange<T>
- {
-public:
- TMdELess(const T& aLimit)
- : TMdERange<T>(T(0), aLimit, EMdERangeTypeLess) {}
- };
-
-
-/**
- * Less-than-or-equal-to range.
- */
-template <class T>
-class TMdELessEqual : public TMdERange<T>
- {
-public:
- TMdELessEqual(const T& aLimit)
- : TMdERange<T>(T(0), aLimit, EMdERangeTypeLessOrEqual) {}
- };
-
-
-/**
- * Greater-than range.
- */
-template <class T>
-class TMdEGreater : public TMdERange<T>
- {
-public:
- TMdEGreater(const T& aLimit)
- : TMdERange<T>(aLimit, T(0), EMdERangeTypeGreater) {}
- };
-
-
-/**
- * Greater-than-or-equal-to range.
- */
-template <class T>
-class TMdEGreaterEqual : public TMdERange<T>
- {
-public:
- TMdEGreaterEqual(const T& aLimit)
- : TMdERange<T>(aLimit, T(0), EMdERangeTypeGreaterOrEqual) {}
- };
-
-
-/**
- * Between range. The upper and lower limits are inclusive by default.
- */
-template <class T>
-class TMdEBetween : public TMdERange<T>
- {
-public:
- TMdEBetween(const T& aMin, const T& aMax)
- : TMdERange<T>(aMin, aMax, EMdERangeTypeBetween) {}
- };
-
-
-/**
- * Not-between range. The upper and lower limits are inclusive by
- * default.
- */
-template <class T>
-class TMdENotBetween : public TMdERange<T>
- {
-public:
- TMdENotBetween(const T& aMin, const T& aMax)
- : TMdERange<T>(aMin, aMax, EMdERangeTypeNotBetween) {}
- };
-
-
-/* Types that will be used in practice. */
-
-/** Value range of type TInt. */
-typedef TMdERange<TInt> TMdEIntRange;
-
-/** Value range of type TUint. */
-typedef TMdERange<TUint> TMdEUintRange;
-
-/** Value range of type TInt64. */
-typedef TMdERange<TInt64> TMdEInt64Range;
-
-/** Value range of type TReal. */
-typedef TMdERange<TReal> TMdERealRange;
-
-/** Value range of type TTime. */
-typedef TMdERange<TTime> TMdETimeRange;
-
-
-/** Macro for defining the real typenames. Makes four versions of each
- range type. */
-#define MDE_DEFINE_ACTUAL_RANGE_TYPES(RangeName) \
- typedef TMdE##RangeName<TInt> TMdEInt##RangeName; \
- typedef TMdE##RangeName<TUint> TMdEUint##RangeName; \
- typedef TMdE##RangeName<TInt64> TMdEInt64##RangeName; \
- typedef TMdE##RangeName<TReal> TMdEReal##RangeName; \
- typedef TMdE##RangeName<TTime> TMdETime##RangeName;
-
-MDE_DEFINE_ACTUAL_RANGE_TYPES(Any)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(Equal)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(NotEqual)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(Less)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(LessEqual)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(Greater)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(GreaterEqual)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(Between)
-MDE_DEFINE_ACTUAL_RANGE_TYPES(NotBetween)
-
-#undef MDE_DEFINE_ACTUAL_RANGE_TYPES
-
-#endif /*MDERANGE_INL_*/