lowlevellibsandfws/apputils/bsul/inc/inifile.h
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lowlevellibsandfws/apputils/bsul/inc/inifile.h	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,169 @@
+// Copyright (c) 2005-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:
+// Ini file parser header file
+// 
+//
+
+/**
+ @file
+ @internalAll
+*/
+
+#ifndef __INIFILE_H__
+#define __INIFILE_H__
+
+#include <e32std.h>
+#include <e32base.h>
+
+//Forward declaration
+class RFs;
+
+namespace BSUL
+	{
+
+class CIniDocument8;
+class CIniDocument16;
+
+class CIniSecIter8Impl;
+/** 
+Section iterator for 8 bit ini file. This class provides an iterator
+to navigate through the settings within a section inside an 8 bit ini file.
+*/
+NONSHARABLE_CLASS(CIniSecIter8): public CBase
+{
+public:
+	IMPORT_C static CIniSecIter8* NewL(const TDesC8& aSectionName,const CIniDocument8* aIniDocument);
+	IMPORT_C ~CIniSecIter8();
+		
+	IMPORT_C TBool Next(TPtrC8& aKey,TPtrC8& aValue);
+	IMPORT_C TBool End();
+	IMPORT_C void Reset();
+private:
+	CIniSecIter8();
+	CIniSecIter8Impl* iImpl;
+};
+
+class CIniDocument8Impl;
+/**
+Dom parser for 8 bit ini file. This class provides the functionality to read
+and write settings of an 8 bit ini file.
+*/
+NONSHARABLE_CLASS(CIniDocument8): public CBase
+{
+public:
+	IMPORT_C static CIniDocument8* NewL(RFs& aFs,const TDesC& aFileName);
+	IMPORT_C ~CIniDocument8();
+	IMPORT_C TInt Externalise(const TDesC& aFileName);
+
+	//read api
+	IMPORT_C TInt GetSectionList(RArray<TPtrC8>& aSectionList) const;
+	IMPORT_C TInt GetKeyValue(const TDesC8& aSectionName,const TDesC8& aKey,TPtrC8& aValue) const;
+
+	//write api
+	IMPORT_C TInt AddSection(const TDesC8& aSectionName);
+	IMPORT_C TInt RemoveSection(const TDesC8& aSectionName);
+	IMPORT_C TInt SetKey(const TDesC8& aSectionName,const TDesC8& aKey,const TDesC8& aValue);
+	IMPORT_C TInt RemoveKey(const TDesC8& aSectionName,const TDesC8& aKey);
+	IMPORT_C TBool CompareDocs(CIniDocument8& aDoc);
+private:
+	friend class CIniSecIter8Impl;
+	CIniDocument8();
+	CIniDocument8Impl* iImpl;
+};
+
+class CIniSecIter16Impl;
+/** 
+Section iterator for 16 bit ini file. This class provides an iterator
+to navigate through the settings within a section inside an 16 bit ini file.
+*/
+NONSHARABLE_CLASS(CIniSecIter16): public CBase
+{
+public:
+	IMPORT_C static CIniSecIter16* NewL(const TDesC16& aSectionName,const CIniDocument16* aIniDocument);
+	IMPORT_C ~CIniSecIter16();
+		
+	IMPORT_C TBool Next(TPtrC16& aKey,TPtrC16& aValue);
+	IMPORT_C TBool End();
+	IMPORT_C void Reset();
+private:
+	CIniSecIter16();
+	CIniSecIter16Impl* iImpl;
+};
+
+class CIniDocument16Impl;
+/**
+Dom parser for 16 bit ini file. This class provides the functionality to read
+and write settings of an 16 bit ini file.
+*/
+NONSHARABLE_CLASS(CIniDocument16): public CBase
+{
+public:
+	IMPORT_C static CIniDocument16* NewL(RFs& aFs,const TDesC& aFileName);
+	IMPORT_C ~CIniDocument16();
+	IMPORT_C TInt Externalise(const TDesC& aFileName);
+
+	//read api
+	IMPORT_C TInt GetSectionList(RArray<TPtrC16>& aSectionList) const;
+	IMPORT_C TInt GetKeyValue(const TDesC16& aSectionName,const TDesC16& aKey,TPtrC16& aValue) const;
+
+	//write api
+	IMPORT_C TInt AddSection(const TDesC16& aSectionName);
+	IMPORT_C TInt RemoveSection(const TDesC16& aSectionName);
+	IMPORT_C TInt SetKey(const TDesC16& aSectionName,const TDesC16& aKey,const TDesC16& aValue);
+	IMPORT_C TInt RemoveKey(const TDesC16& aSectionName,const TDesC16& aKey);
+	IMPORT_C TBool CompareDocs(CIniDocument16& aDoc);
+private:
+	friend class CIniSecIter16Impl;
+	CIniDocument16();
+	CIniDocument16Impl* iImpl;
+};
+
+class CIniFile8Impl;
+/**
+A light weight parser for reading setting values from an 8 bit ini file. Note that this does not 
+guarantee checking that the ini file is wellformed. See CIniFile16 for a class that handles both 
+8 and 16 bit files.  
+*/
+NONSHARABLE_CLASS(CIniFile8): public CBase
+{
+public:
+	IMPORT_C static CIniFile8* NewL(RFs& aFs,const TDesC& aFileName);
+	IMPORT_C ~CIniFile8();
+	IMPORT_C TInt FindVar(const TDesC8& aSectionName,const TDesC8& aKeyName,TPtrC8& aValue)	const;
+private:
+	CIniFile8();
+	CIniFile8Impl* iImpl;
+};
+
+class CIniFile16Impl;
+/**
+A light weight parser for reading setting values from a 16 or 8 bit ini file. The aConvert8To16
+parameter of NewL controls whether or not 8 bit files are accepted. Note that this does
+not guarantee checking that the ini file is wellformed.
+*/
+NONSHARABLE_CLASS(CIniFile16): public CBase
+{
+public:
+	IMPORT_C static CIniFile16* NewL(RFs& aFs,const TDesC& aFileName);
+	IMPORT_C static CIniFile16* NewL(RFs& aFs,const TDesC& aFileName,TBool aConvert8To16);
+	IMPORT_C ~CIniFile16();
+	IMPORT_C TInt FindVar(const TDesC16& aSectionName,const TDesC16& aKeyName,TPtrC16& aValue) const;
+private:
+	CIniFile16();
+	CIniFile16Impl* iImpl;
+};
+
+}//namespace BSUL
+
+#endif