contentmgmt/contentaccessfwfordrm/inc/bitset.h
changeset 0 2c201484c85f
child 8 35751d3474b7
equal deleted inserted replaced
-1:000000000000 0:2c201484c85f
       
     1 /*
       
     2 * Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 /**
       
    22  @file
       
    23  @publishedPartner
       
    24  @deprecated
       
    25 */
       
    26 
       
    27 #ifndef __BITSET_H__
       
    28 #define __BITSET_H__
       
    29 
       
    30 #ifndef REMOVE_CAF1
       
    31 
       
    32 #include <e32base.h>
       
    33 #include <caf/caftypes.h>
       
    34 
       
    35 class RWriteStream;
       
    36 class RReadStream;
       
    37 
       
    38 namespace ContentAccess
       
    39 {
       
    40 	
       
    41 	/** @deprecated */
       
    42 	enum TCafUtilsPanics
       
    43 		{
       
    44 		EInvalidBit
       
    45 		};
       
    46 
       
    47 	_LIT(KCafUtilsPanic, "CafUtils");
       
    48 
       
    49 	/**
       
    50 	 * A container of bits. 
       
    51 	 * 
       
    52 	 * The bits may be retrieved, set, and unset.
       
    53 	 *
       
    54 	 * @publishedPartner
       
    55 	 * @deprecated 
       
    56 	 */
       
    57 	class CBitset : public CBase
       
    58 		{
       
    59 	public:
       
    60 		/**
       
    61 		 * Constructs a new bitset object with a maximum number of bits.
       
    62 		 * 
       
    63 		 * @param aMaxBits	The maximum number of bits this object may contain.
       
    64 		 */
       
    65 		IMPORT_C static CBitset* NewL(TInt aMaxBits);
       
    66 
       
    67 		/** @see CBitset::NewL(TInt aMaxBits) */
       
    68 		IMPORT_C static CBitset* NewLC(TInt aMaxBits);
       
    69 		
       
    70 		/** 
       
    71 		 * Copy constructor
       
    72 		 *
       
    73 		 * @param aSource	The object to be copied from.
       
    74 		 */
       
    75 		IMPORT_C static CBitset* NewL(const CBitset& aSource);
       
    76 
       
    77 		/** @see CBitset::NewL(const CBitset& aSource) */
       
    78 		IMPORT_C static CBitset* NewLC(const CBitset& aSource);
       
    79 
       
    80 		virtual ~CBitset();
       
    81 
       
    82 	public:
       
    83 		/** Resets the entire bitset to zero. */
       
    84 		IMPORT_C void Reset();
       
    85 
       
    86 		/** Gets the maximum number of settable/gettable bits. */
       
    87 		IMPORT_C TInt MaxBits() const;
       
    88 
       
    89 		/** Sets all bits in the set to one. */
       
    90 		IMPORT_C void SetAll();
       
    91 
       
    92 		/** Inverts all bits in the set. */
       
    93 		IMPORT_C void Invert();
       
    94 		
       
    95 		/** Sets the 'aBit'th bit of the set. 
       
    96 		* @param aBit the bit to set 
       
    97 		* @panic CafUtils 0 if aBit is out of range
       
    98 		*/
       
    99 		IMPORT_C void Set(TInt aBit);
       
   100 
       
   101 		/** Clears the 'aBit'th bit of the set. 
       
   102 		* @param aBit the bit to clear
       
   103 		* @panic CafUtils 0 if aBit is out of range
       
   104 		*/
       
   105 		IMPORT_C void Unset(TInt aBit);
       
   106 		
       
   107 		/** 
       
   108 		 * Queries the single bit of the set.
       
   109 		 * 
       
   110 		 * @param aBit	The bit that requires testing.
       
   111 		 * @return		ETrue if the bit was set, EFalse otherwise.
       
   112  		 * @panic CafUtils 0 if aBit is out of range
       
   113 		 * 
       
   114 		 */
       
   115 		IMPORT_C TBool IsSet(TInt aBit) const;
       
   116 
       
   117 		/** 
       
   118 		 * Assignment of a bitset. 
       
   119 		 * 
       
   120 		 * Note that an assignment of a longer bitset to a
       
   121 		 * shorter bitset will result in the shorter bitset
       
   122 		 * being expanded. This function may leave.
       
   123 		 *
       
   124 		 * @param aSource	The bitset ......
       
   125 		 * @return			A bitset.
       
   126 		 */
       
   127 		IMPORT_C CBitset& operator=(const CBitset& aSource);
       
   128 
       
   129 		/**
       
   130 		 * Allows comparisons of CBitsets. 
       
   131 		 * 
       
   132 		 * Note that it is possible to compare a longer
       
   133 		 * bitset with a shorter one. However, only the 
       
   134 		 * relevant (low-order) bits are compared.
       
   135 		 *
       
   136 		 * @param aSource	The bitset .....
       
   137 		 * @return			ETrue if the ....., EFalse otherwise.
       
   138 		 */
       
   139 		IMPORT_C TBool operator==(const CBitset& aSource) const;
       
   140 		inline TBool operator!=(const CBitset& aSource) const;
       
   141 
       
   142 		/** 
       
   143 		 * Externalisation function that allows this object to be
       
   144 		 * marshalled prior to being shipped over a client-server
       
   145 		 * interface by related glue-code.
       
   146 		 *
       
   147 		 * @param aStream	On return, the .....
       
   148 		 */
       
   149 		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
       
   150 		
       
   151 		/**
       
   152 		 * Internalisation function that allows this object to to be
       
   153 		 * unmarshalled after transfer across a client-server
       
   154 		 * interface. 
       
   155 		 *
       
   156 		 * @param aStream	On return, the .....
       
   157 		 */
       
   158 		IMPORT_C void InternalizeL(RReadStream& aStream);
       
   159 
       
   160 		/**
       
   161 		 * Allows a caller to set multiple bits in the bitset
       
   162 		 * by allowing a variable-length parameter list. 
       
   163 		 * 
       
   164 		 * @param aItems	The number of items following in the
       
   165 		 * 					parameter list.
       
   166 		 */
       
   167 		IMPORT_C void SetListL(TInt aItems, ...);
       
   168 
       
   169 		/**
       
   170 		 * Allows a caller to query multiple bits in the bitset.
       
   171 		 * 
       
   172 		 * @param aItems	The number of items following in the
       
   173 		 * 					parameter list.
       
   174 		 * @return			ETrue if all of the bits specified were set. EFalse if
       
   175 		 * 					one or more were unset.
       
   176 		 */
       
   177 		IMPORT_C TBool IsSetList(TInt aItems, ...) const;
       
   178 
       
   179 	private:
       
   180 		void ConstructL(TInt aMaxId);
       
   181 		void ConstructL(const CBitset& aSource);
       
   182 		CBitset();
       
   183 		CBitset(const CBitset& aSource);
       
   184 
       
   185 		/**
       
   186 		 * Converts from a bit ID to a byte and 
       
   187 		 * bit within one of the bit-field sets.
       
   188 		 * 
       
   189 		 * @param aBitId		The bit ID being mapped.
       
   190 		 * @param aByte			Modified to contain the resultant byte number.
       
   191 		 * @param aBitInByte	Modified to contain the resultant bit number
       
   192 		 * 						within the byte.
       
   193 		 */
       
   194 		void IdentifyBit(TInt aBitId, TInt& aByte, TInt& aBitInByte) const;
       
   195 		
       
   196 		/** 
       
   197 		* Tests whether the bit value is valid for this bitset.
       
   198 		*
       
   199 		* @param aAttributeId	The .....
       
   200 		* @return				ETrue if the bit value is valid for this bitset, EFalse otherwise.
       
   201 		*/
       
   202 		inline TBool ValidBit(TInt aAttributeId) const;
       
   203 		
       
   204 	private:
       
   205 		/** The number of bytes required to allow for maxbits */
       
   206 		TInt iWidth; 
       
   207 
       
   208 		/** The maximum number of bits in this bitset */
       
   209 		TInt iMaxBits;
       
   210 
       
   211 		/** The actual set of bits */
       
   212 		TUint8* iBitSet;
       
   213 		};
       
   214 
       
   215 }
       
   216 
       
   217 inline TBool ContentAccess::CBitset::operator!=(const CBitset& aSource) const
       
   218 	{
       
   219 	return !operator==(aSource);
       
   220 	}
       
   221 
       
   222 inline TBool ContentAccess::CBitset::ValidBit(TInt aBit) const
       
   223 	{
       
   224 	return (aBit >= 0) && (aBit < iMaxBits);
       
   225 	}
       
   226 
       
   227 #endif // REMOVE_CAF1
       
   228 
       
   229 #endif // __BITSET_H__