sl@0: /* sl@0: * Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * TStackInteger class implementation sl@0: * sl@0: */ sl@0: sl@0: sl@0: /** sl@0: @file sl@0: @internalComponent sl@0: */ sl@0: sl@0: #ifndef __STACK_INTEGER_H__ sl@0: #define __STACK_INTEGER_H__ sl@0: sl@0: #include "bigint.h" sl@0: sl@0: /** An integer that can be created on the stack.\n\n sl@0: * The resulting integers are sl@0: * fixed in size and any code that tries to modify their memory allocation sl@0: * will panic. Stack based integers may be modified as long as you can sl@0: * guarantee that the resulting integer will fit in the current amount of sl@0: * allocated memory. sl@0: * If you are not sure which integer you want, you want an RInteger. sl@0: * @internalComponent sl@0: * @released sl@0: * @see RInteger sl@0: */ sl@0: template sl@0: class TStackInteger : public TInteger sl@0: { sl@0: public: sl@0: inline TStackInteger(TUint aInteger) {ConstructStack(W, aInteger);} sl@0: inline TStackInteger(const TInteger& aInteger) {ConstructStack(W, aInteger);} sl@0: protected: sl@0: TUint32 iBuf[W]; sl@0: }; sl@0: sl@0: typedef TStackInteger<2> TStackInteger64; sl@0: typedef TStackInteger<4> TStackInteger128; sl@0: typedef TStackInteger<8> TStackInteger256; sl@0: typedef TStackInteger<16> TStackInteger512; sl@0: typedef TStackInteger<32> TStackInteger1024; sl@0: typedef TStackInteger<64> TStackInteger2048; sl@0: //Don't make them any bigger than this :). The last one is 66 words (264 bytes) sl@0: sl@0: #endif // __STACK_INTEGER_H__