javacommons/security/legacysupport/midp2securitypolicyv2/plugins/securitypolicyV2/src/XPFParser.h
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/legacysupport/midp2securitypolicyv2/plugins/securitypolicyV2/src/XPFParser.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2003 - 2004 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:
+*
+*/
+
+
+
+
+/**
+ *
+ * @file    XPFParser.h
+ *
+ * @internalComponent
+ *
+ */
+
+#ifndef XPFPARSER_H
+#define XPFPARSER_H
+
+#include <e32base.h>
+#include "j2me/midp2/security/MDriveAccessPolicy.h"
+
+
+
+
+namespace MIDP
+{
+class CFileSystemAccessPolicy;
+class CPathAccessPolicy;
+class CFunctionGroup;
+class CFunctionGroupBinding;
+class CProtectionDomain;
+class CSecurityPolicy;
+class RUTF8File;
+class CBlanketPermissionPolicy;
+class CBlanketPermissionPolicyElement;
+
+class CXPFParser: public CBase
+{
+public:
+
+    static CXPFParser* NewLC(RFile&, CSecurityPolicy&);
+
+public:
+
+    virtual ~CXPFParser();
+
+    void ParseL(void);
+
+private:
+
+    enum TToken
+    {
+        ENoToken = 0,
+        EAny,
+        EEndOfFile,
+        EEndOfLine,
+        EString,
+        ESymbol,
+        EComment,
+        ECommentOrNewline,
+        EDomainName,
+        EFunctionGroupName,
+        EInteractionMode,
+        EPathAccessMode,
+        EPermissionName,
+        EPermissionType
+    };
+
+    enum TDeclarationType
+    {
+        ENoType = 0,
+        EDomain,
+        EUntrustedDomain,
+        EFunctionGroup,
+        EPermission,
+        EFunctionGroupBinding
+    };
+
+private:
+
+    CXPFParser(RFile&, CSecurityPolicy&);
+
+    void ConstructL(void);
+
+    void  DomainsL(void);
+    void  DomainL(void);
+    void  ConnectionFiltersL(void);
+    void  ConnectionFilterL(void);
+    void  FileAccessL();
+    void  DriveListL(CFileSystemAccessPolicy&);
+    TInt  DriveTokenL(void);
+    void  PathAccessL(CPathAccessPolicy&);
+    void  PathMappingL(CPathAccessPolicy&);
+    void  FunctionGroupsL(void);
+    void  FunctionGroupL(void);
+    void  BindingsL(void);
+    void  DomainBindingsL(void);
+    TBool FunctionGroupBindingL(void);
+    void  RuleL(CFunctionGroupBinding&);
+
+    MPermission::TMode InteractionModeL();
+
+    void MiscL(void);
+    void NewLineL(void);
+    void NewLinePlusL(void);
+
+    void SkipWhitespace(void);
+
+    void EnsureL(const TDesC&, const TDesC&);
+    void EnsureTokenL(const TDesC&);
+
+    TToken TokenL(TToken aExpected = EAny);
+
+    HBufC* StringLC(void);
+
+    TInt ReadLineL(void);
+
+    TInt ReadLineL(HBufC*& aBuffer);
+    TInt ReadChar(TUint16& aChar);
+    TInt Read(TUint8& aByte);
+
+    CFunctionGroup*         FindFunctionGroup(const TDesC&);
+    CFunctionGroupBinding*  FindFunctionGroupBinding(const TDesC&);
+
+    void AddDefaultBindingsL(
+        MPermission::TType,
+        MPermission::TMode,
+        MPermission::TMode);
+
+    void AddDefaultBindingsL(
+        MPermission::TType aPermissionType,
+        MPermission::TMode aDefaultModes,
+        TUint32            aInteractionModeMap);
+
+    void DuplicateDeclarationL(TDeclarationType, const TDesC&);
+    void UndeclaredL(TDeclarationType, const TDesC&);
+    void UnexpectedL(const TDesC& aExpected, const TDesC& aActual);
+    void UnexpectedL(TToken aExpected, const TDesC& aActual);
+    void UnexpectedL(TToken aExpected, TToken aActual);
+
+    void ErrorL(const TDesC&, const TDesC&, const TDesC&);
+
+    const TDesC& ToString(TDeclarationType);
+    const TDesC& ToString(TToken);
+
+    void BlanketPermissionL(void);
+    void ExclusionSetL(CBlanketPermissionPolicy* aBpp);
+
+private:
+
+    RFile&                                  iFile;
+    HBufC8*                                 iFileBuffer;
+    TInt                                    iFileBufferLength;
+    TInt                                    iFileBufferOffset;
+    CSecurityPolicy&                        iPolicy;
+    HBufC*                                  iBuffer;
+    TPtrC                                   iPtr;
+    TPtrC                                   iToken;
+    TBool                                   iNextLine;
+    TInt                                    iLineLength;
+    TUint32                                 iLineNumber;
+    TInt                                    iLineOffset;
+    CProtectionDomain*                      iCurrentDomain;
+    CProtectionDomain*                      iUntrustedDomain;
+    RPointerArray<CFunctionGroup>           iFunctionGroups;
+    RPointerArray<CFunctionGroupBinding>    iFunctionGroupBindings;
+    HBufC*                                  iFunctionGroupName;
+    HBufC*                                  iPermission;
+    RArray<MPermission::TMode>              iMappings;
+    RPointerArray<HBufC>                    iArgs;
+};
+
+} // end of namespace MIDP
+
+#endif // XPFPARSER_H