williamr@4: /* williamr@4: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #if !defined(__INIPARSER_H__) williamr@4: #define __INIPARSER_H__ williamr@4: williamr@4: #include williamr@4: #include williamr@4: williamr@4: _LIT(KUseSystemDrive, "$:"); williamr@4: williamr@4: class CIniData : public CBase williamr@4: /** williamr@4: * williamr@4: * @publishedPartner williamr@4: * @test williamr@4: * williamr@4: * Defines the interface to acess to ini data file williamr@4: * williamr@4: * The basic functions, FindVar(), SetValue(), AddValue() and WriteToFileL() williamr@4: * Compulsory to call WriteToFileL() after calling any SetValue() or AddValue() williamr@4: */ williamr@4: { williamr@4: public: williamr@4: // Constructor, pass in name of ini file to open williamr@4: // Default search path is 'c:\system\data' on target filesystem williamr@4: // ie. 'NewL(_L("c:\\system\\data\\ttools.ini"))' is equivalent williamr@4: // to 'NewL(_L("ttools.ini"))' williamr@4: IMPORT_C static CIniData* NewL(const TDesC& aName); williamr@4: IMPORT_C virtual ~CIniData(); williamr@4: williamr@4: IMPORT_C TBool FindVar(const TDesC &aKeyName, // Key to look for williamr@4: TPtrC &aResult); // Buffer to store value williamr@4: williamr@4: IMPORT_C TBool FindVar(const TDesC &aKeyName, // Key to look for williamr@4: TInt &aResult); // Int ref to store result williamr@4: williamr@4: IMPORT_C TBool FindVar(const TDesC &aSection, // Section to look under williamr@4: const TDesC &aKeyName, // Key to look for williamr@4: TPtrC &aResult); // Buffer to store result williamr@4: williamr@4: IMPORT_C TBool FindVar(const TDesC &aSection, // Section to look under williamr@4: const TDesC &aKeyName, // Key to look for williamr@4: TInt &aResult); // Int ref to store result williamr@4: williamr@4: IMPORT_C TInt SetValue(const TDesC& aKeyName,// Key to look for williamr@4: const TDesC& aValue); // aValue being modified williamr@4: IMPORT_C TInt SetValue(const TDesC& aSection, // Section to look under williamr@4: const TDesC& aKeyName, // Key to look for williamr@4: const TDesC& aValue); // aValue being modified williamr@4: IMPORT_C TInt AddValue(const TDesC& aSection, // Section to look under williamr@4: const TDesC& aKeyName, // Key to look for williamr@4: const TDesC& aValue); // aValue being modified williamr@4: IMPORT_C TInt AddValue(const TDesC& aKeyName, // Key to look for williamr@4: const TDesC& aValue); // aValue being modified williamr@4: IMPORT_C void WriteToFileL(); williamr@4: // Overloaded NewL() added to recieve optional system drive letter from the user williamr@4: // And expand ${SYSDRIVE} variable. Else, the variable expands to RFs::GetSystemDrive() williamr@4: IMPORT_C static CIniData* NewL(const TDesC& aName, const TDesC& aSysDrive); williamr@4: protected: williamr@4: IMPORT_C CIniData(); williamr@4: IMPORT_C CIniData(const TDesC& aSysDrive); williamr@4: IMPORT_C void ConstructL(const TDesC& aName); williamr@4: public: williamr@4: IMPORT_C TBool FindVar(const TDesC &aSection, // Section to look under williamr@4: const TDesC &aKeyName, // Key to look for williamr@4: TInt64 &aResult); // Int64 ref to store result williamr@4: williamr@4: private: williamr@4: void UpdateVariablesL(); williamr@4: TBool FindVar(const TDesC &aSectName,const TDesC &aKeyName,TPtrC &aResult, TPtr& aIniDataPtr); williamr@4: private: williamr@4: HBufC* iName; williamr@4: HBufC* iToken; williamr@4: HBufC* iIniData; williamr@4: TPtr iPtr; williamr@4: TPtr iPtrExpandedVars; williamr@4: TDriveName iDefaultSysDrive; williamr@4: TDriveName iSysDrive; williamr@4: }; williamr@4: williamr@4: #endif