commsprocess/commsrootserverconfig/configurator/src/c32cmiutils.cpp
changeset 0 dfb7c4ff071f
equal deleted inserted replaced
-1:000000000000 0:dfb7c4ff071f
       
     1 /*
       
     2 * Copyright (c) 2006-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 "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 #include "c32cmiutils.h"
       
    19 
       
    20 /** A class that differs from TLitC8 only in that it does not have a
       
    21 dereference operator defined. Assists in building constant arrays
       
    22 of literal strings, constructed at compile time so no dll data is needed.
       
    23 @internalComponent
       
    24 */
       
    25 template <TInt S>
       
    26 class TStLitC8
       
    27     {
       
    28 public:
       
    29     inline operator const TDesC8&() const;
       
    30     inline const TDesC8& operator()() const;
       
    31     inline operator const __TRefDesC8() const;
       
    32 public:
       
    33     TUint iTypeLength;
       
    34     TText8 iBuf[__Align8(S)];
       
    35     };
       
    36 
       
    37 template <TInt S>
       
    38 inline const TDesC8& TStLitC8<S>::operator()() const
       
    39     {
       
    40     return *REINTERPRET_CAST(const TDesC8*,this);
       
    41     }
       
    42 
       
    43 template <TInt S>
       
    44 inline TStLitC8<S>::operator const TDesC8&() const
       
    45     {
       
    46     return *REINTERPRET_CAST(const TDesC8*,this);
       
    47     }
       
    48 
       
    49 template <TInt S>
       
    50 inline TStLitC8<S>::operator const __TRefDesC8() const
       
    51     {
       
    52     return *REINTERPRET_CAST(const TDesC8*,this);
       
    53     }
       
    54 
       
    55 /**
       
    56 @internalComponent
       
    57 */
       
    58 #define _STLIT8(name,s) static const TStLitC8<sizeof(s)> name={sizeof(s)-1,s}
       
    59 
       
    60 // List of possible priorities
       
    61 _STLIT8(KEPriorityMuchLess,					"EPriorityMuchLess");
       
    62 _STLIT8(KEPriorityLess,						"EPriorityLess");
       
    63 _STLIT8(KEPriorityNormal,					"EPriorityNormal");
       
    64 _STLIT8(KEPriorityMore,						"EPriorityMore");
       
    65 _STLIT8(KEPriorityMuchMore,					"EPriorityMuchMore");
       
    66 _STLIT8(KEPriorityRealTime,					"EPriorityRealTime");
       
    67 _STLIT8(KEPriorityAbsoluteVeryLow,			"EPriorityAbsoluteVeryLow");
       
    68 _STLIT8(KEPriorityAbsoluteLowNormal,		"EPriorityAbsoluteLowNormal");
       
    69 _STLIT8(KEPriorityAbsoluteLow,				"EPriorityAbsoluteLow");
       
    70 _STLIT8(KEPriorityAbsoluteBackgroundNormal,	"EPriorityAbsoluteBackgroundNormal");
       
    71 _STLIT8(KEPriorityAbsoluteBackground, 		"EPriorityAbsoluteBackground");
       
    72 _STLIT8(KEPriorityAbsoluteForegroundNormal,	"EPriorityAbsoluteForegroundNormal");
       
    73 _STLIT8(KEPriorityAbsoluteForeground,		"EPriorityAbsoluteForeground");
       
    74 _STLIT8(KEPriorityAbsoluteHighNormal,		"EPriorityAbsoluteHighNormal");
       
    75 _STLIT8(KEPriorityAbsoluteHigh,				"EPriorityAbsoluteHigh");
       
    76 _STLIT8(KEPriorityAbsoluteRealTime1,		"EPriorityAbsoluteRealTime1");
       
    77 _STLIT8(KEPriorityAbsoluteRealTime2,		"EPriorityAbsoluteRealTime2");
       
    78 _STLIT8(KEPriorityAbsoluteRealTime3,		"EPriorityAbsoluteRealTime3");
       
    79 _STLIT8(KEPriorityAbsoluteRealTime4,		"EPriorityAbsoluteRealTime4");
       
    80 _STLIT8(KEPriorityAbsoluteRealTime5,		"EPriorityAbsoluteRealTime5");
       
    81 _STLIT8(KEPriorityAbsoluteRealTime6,		"EPriorityAbsoluteRealTime6");
       
    82 _STLIT8(KEPriorityAbsoluteRealTime7,		"EPriorityAbsoluteRealTime7");
       
    83 _STLIT8(KEPriorityAbsoluteRealTime8,		"EPriorityAbsoluteRealTime8");
       
    84 
       
    85 #undef _STLIT8
       
    86 
       
    87 /** priority name-value pair
       
    88 @internalComponent
       
    89 */
       
    90 struct TPriorityEntry
       
    91 	{
       
    92 	const TDesC8* iPriorityName;
       
    93 	TThreadPriority iPriority;
       
    94 	};
       
    95 
       
    96 /**
       
    97 Look-up table of thread priority name-enum pairs.
       
    98 Ordered to match the most common comms priorities first.
       
    99 @internalComponent
       
   100 */
       
   101 static const TPriorityEntry priorityNamePairs[] =
       
   102 	{
       
   103 	reinterpret_cast<const TDesC8*>(&KEPriorityMore),						EPriorityMore,
       
   104 	reinterpret_cast<const TDesC8*>(&KEPriorityMuchMore),					EPriorityMuchMore,
       
   105 	reinterpret_cast<const TDesC8*>(&KEPriorityRealTime),					EPriorityRealTime,
       
   106 	reinterpret_cast<const TDesC8*>(&KEPriorityNormal),						EPriorityNormal,
       
   107 	reinterpret_cast<const TDesC8*>(&KEPriorityLess),						EPriorityLess,
       
   108 	reinterpret_cast<const TDesC8*>(&KEPriorityMuchLess),					EPriorityMuchLess,
       
   109 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteHigh),				EPriorityAbsoluteHigh,
       
   110 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteHighNormal),			EPriorityAbsoluteHighNormal,
       
   111 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteForeground),			EPriorityAbsoluteForeground,
       
   112 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteForegroundNormal),	EPriorityAbsoluteForegroundNormal,
       
   113 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime1),			EPriorityAbsoluteRealTime1,
       
   114 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime2),			EPriorityAbsoluteRealTime2,
       
   115 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime3),			EPriorityAbsoluteRealTime3,
       
   116 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime4),			EPriorityAbsoluteRealTime4,
       
   117 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime5),			EPriorityAbsoluteRealTime5,
       
   118 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime6),			EPriorityAbsoluteRealTime6,
       
   119 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime7),			EPriorityAbsoluteRealTime7,
       
   120 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteRealTime8),			EPriorityAbsoluteRealTime8,
       
   121 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteBackground),			EPriorityAbsoluteBackground,
       
   122 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteBackgroundNormal),	EPriorityAbsoluteBackgroundNormal,
       
   123 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteLow),				EPriorityAbsoluteLow,
       
   124 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteLowNormal),			EPriorityAbsoluteLowNormal,
       
   125 	reinterpret_cast<const TDesC8*>(&KEPriorityAbsoluteVeryLow),			EPriorityAbsoluteVeryLow
       
   126 	};
       
   127 
       
   128 /**
       
   129 Converts a thread priority name to the corresponding enum value.
       
   130 @param aPriorityName The input priority name as a descriptor, either a TThreadPriority
       
   131 enum value such as "10" or a full TThreadPriority enum name such a "EPriorityMore",
       
   132 case insensitive.
       
   133 @param aPriority On success, contains the thread priority enumerator value
       
   134 @return KErrNone if successful, KErrCorrupt if aPriorityName is unrecognised. If priority
       
   135 is passed in as a number it will not be checked for validity, and KErrNone always returned:
       
   136 calling code must beware that passing invalid enum values to RThread will result in a panic.
       
   137 @internalComponent
       
   138 */
       
   139 TInt C32CmiUtils::ThreadPriorityNameToEnum(const TDesC8& aPriorityName, TThreadPriority& aPriority)
       
   140 	{
       
   141 	TLex8 name(aPriorityName);
       
   142 	TInt priorityValue;
       
   143 	TInt valResult = name.Val(priorityValue);
       
   144 	if ((valResult == KErrNone) && name.Eos())
       
   145 		{
       
   146 		aPriority = (TThreadPriority)priorityValue;
       
   147 		return KErrNone;
       
   148 		}
       
   149 	const TInt numPriorities = sizeof(priorityNamePairs) / sizeof(TPriorityEntry);
       
   150 	for (TInt i = 0; i < numPriorities; ++i)
       
   151 		{
       
   152 		if (aPriorityName.CompareF(*priorityNamePairs[i].iPriorityName) == 0)
       
   153 			{
       
   154 			aPriority = priorityNamePairs[i].iPriority;
       
   155 			return KErrNone;
       
   156 			}
       
   157 		}
       
   158 	return KErrCorrupt;
       
   159 	}
       
   160