serviceapifw_plat/rtsecuritymanager_utility_api/inc/rtsecmgrpermissionset.h
changeset 57 61b27eec6533
parent 45 7aa6007702af
equal deleted inserted replaced
45:7aa6007702af 57:61b27eec6533
     1 /*
       
     2 * Copyright (c) 2007-2008 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 the License "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:       Defines permission set class
       
    15  *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 #ifndef _CPERMISSIONSET_H_
       
    25 #define _CPERMISSIONSET_H_
       
    26 
       
    27 #include <e32debug.h>
       
    28 #include <s32strm.h>
       
    29 #include <s32mem.h>
       
    30 #include <rtsecmgrcommondef.h>
       
    31 #include <rtsecmgrpermission.h>
       
    32 
       
    33 //Forward declaration
       
    34 class CPermissionSet;
       
    35 
       
    36 typedef RPointerArray<CPermission> RPermissions;
       
    37 typedef TUint32 TUnConditionalPermission;
       
    38 typedef RArray<TCapability> RUnConditionals;
       
    39 typedef RPointerArray<CPermissionSet> RPermissionSet;
       
    40 
       
    41 /**
       
    42  * CPermissionSet represents list of user grantable permissions
       
    43  * and list of unconditional permissions.
       
    44  * 
       
    45  * CPermissionSet provides accessor and modifier methods to access
       
    46  * and modify CPermissionSet object state
       
    47  * 
       
    48  * @lib rtsecmgrutil.lib
       
    49  */
       
    50 NONSHARABLE_CLASS(CPermissionSet) : public CBase
       
    51 	{
       
    52 public:
       
    53 	/**
       
    54 	 * Two-phased constructor
       
    55 	 * 
       
    56 	 * Constructs a CPermissionSet instance
       
    57 	 *
       
    58 	 * @return pointer to an instance of CPermissionSet
       
    59 	 */
       
    60 	IMPORT_C static CPermissionSet* NewL();
       
    61 	
       
    62 	/**
       
    63 	 * Two-phased constructor
       
    64 	 * 
       
    65 	 * Constructs a CPermissionSet instance and leaves the created instance
       
    66 	 * on the cleanupstack
       
    67 	 *
       
    68 	 * @return pointer to an instance of CPermissionSet
       
    69 	 */
       
    70 	IMPORT_C static CPermissionSet* NewLC();
       
    71 	
       
    72 	/**
       
    73 	 * Two-phased constructor
       
    74 	 * 
       
    75 	 * Constructs a CPermissionSet instance from another permissionset
       
    76 	 * object
       
    77 	 *
       
    78 	 * @param aPermSet CPermissionSet source permissionset object
       
    79 	 * 
       
    80 	 * @return pointer to an instance of CPermissionSet
       
    81 	 */
       
    82 	IMPORT_C static CPermissionSet* NewL(const CPermissionSet& aPermSet);
       
    83 	
       
    84 	/**
       
    85 	 * Two-phased constructor
       
    86 	 * 
       
    87 	 * Constructs a CPermissionSet instance from another permissionset
       
    88 	 * object and leaves the created instance on the cleanupstack
       
    89 	 *
       
    90 	 * @param aPermSet CPermissionSet source permissionset object
       
    91 	 * 
       
    92 	 * @return pointer to an instance of CPermissionSet
       
    93 	 */
       
    94 	IMPORT_C static CPermissionSet* NewLC(const CPermissionSet& aPermSet);
       
    95 	
       
    96 	/**
       
    97 	 * Destructor
       
    98 	 * 
       
    99 	 */
       
   100 	IMPORT_C ~CPermissionSet();
       
   101 	
       
   102 	/**
       
   103 	 * Externalizes permissionset data to stream
       
   104 	 * 
       
   105 	 * @param aOutStream RWriteStream output stream
       
   106 	 */
       
   107 	IMPORT_C void ExternalizeL(RWriteStream& aSink) const;
       
   108 	
       
   109 	/**
       
   110 	 * Internalizes permissionset data from stream
       
   111 	 * 
       
   112 	 * @param aInStream RReadStream input source stream
       
   113 	 */
       
   114 	IMPORT_C void InternalizeL(RReadStream& aSource);
       
   115 
       
   116 	/*
       
   117 	 * Adds an unconditional capability to the permissionset
       
   118 	 * 
       
   119 	 * @param aCapability TCapability unconditional capability to be added
       
   120 	 */
       
   121 	IMPORT_C void AppendUncondCap(TCapability aCapability);
       
   122 	
       
   123 	/*
       
   124 	 * Adds a list of unconditional capabilities to the permissionset
       
   125 	 * 
       
   126 	 * @param TUnConditionalPermission aUnConditionals - list of TCapability that are to be added
       
   127 	 */
       
   128 	IMPORT_C void AppendUncondCapabilities(TUnConditionalPermission aUnConditionals);
       
   129 	
       
   130 	/*
       
   131 	 * Adds a permission to the permissionset
       
   132 	 * 
       
   133 	 * @param aPermission CPermission permission data to be added
       
   134 	 * 
       
   135 	 */
       
   136 	IMPORT_C void AppendPermission(CPermission& aPermission);
       
   137 
       
   138 	/*
       
   139 	 * Gets the list of user-grantable permissions
       
   140 	 * 
       
   141 	 * @return RPermissions non-modifiable reference to the list of user-grantable permissions
       
   142 	 * 
       
   143 	 */
       
   144 	IMPORT_C const RPermissions& Permissions() const;
       
   145 	
       
   146 	/*
       
   147 	 * Gets the list of unconditional permissions
       
   148 	 * 
       
   149 	 * @return TUnConditionalPermission unconditional permission
       
   150 	 *  
       
   151 	 */
       
   152 	IMPORT_C TUnConditionalPermission UnconditionalCaps() const;
       
   153 	
       
   154 	/*
       
   155 	 * Gets the list of unconditional permissions as array of
       
   156 	 * TCapability
       
   157 	 * 
       
   158 	 * @return RUnConditionals list of unconditional capabilities
       
   159 	 * 
       
   160 	 * @see TCapability
       
   161 	 * 
       
   162 	 */
       
   163 	IMPORT_C void UnconditionalCaps(RUnConditionals& aUnConditionals) const;
       
   164 	
       
   165 	/*
       
   166 	 * Gets list of user-grantable permissions. This overloaded version
       
   167 	 * returns modifiable list of user-grantable permissions
       
   168 	 * 
       
   169 	 * @return RPermissions list of user-grantable permissions
       
   170 	 *  
       
   171 	 */
       
   172 	IMPORT_C RPermissions& Permissions();
       
   173 
       
   174 private:
       
   175 	/*
       
   176 	 * Default private constructor
       
   177 	 */
       
   178 	inline CPermissionSet()
       
   179 		{}
       
   180 	
       
   181 	/*
       
   182 	 * private copy constructor
       
   183 	 */
       
   184 	CPermissionSet(const CPermissionSet& aPermSet);
       
   185 	
       
   186 	/* 
       
   187 	 * Private second phase constructor
       
   188 	 */
       
   189 	 void ConstructL(const CPermissionSet& aPermSet);
       
   190 	 
       
   191 private:
       
   192 	
       
   193 	//unconditional permissions
       
   194 	TUnConditionalPermission iUncondCapSet;
       
   195 	
       
   196 	//user-grantable permissions
       
   197 	RPermissions iPermissions;
       
   198 	};
       
   199 #endif //_CPERMISSIONSET_H_
       
   200