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 "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.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: * CAuthExpression declaration williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef AUTHEXPRESSION_H williamr@4: #define AUTHEXPRESSION_H williamr@4: williamr@4: #include williamr@4: #include "authserver/authtypes.h" williamr@4: williamr@4: williamr@4: namespace AuthServer williamr@4: { williamr@4: williamr@4: williamr@4: class CAuthExpression : public CBase williamr@4: /** williamr@4: Describes an authentication expression. williamr@4: williamr@4: AuthServer clients construct expressions using williamr@4: AuthExpr, combined with AuthAnd and AuthOr, or williamr@4: the equivalent overloaded & and | operators. williamr@4: williamr@4: @see AuthExpr williamr@4: @see AuthAnd williamr@4: @see AuthOr williamr@4: */ williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Externalize this object to the supplied stream. williamr@4: williamr@4: @param aWriteStream Stream to write persistent state to. williamr@4: */ williamr@4: virtual void ExternalizeL(RWriteStream& aWriteStream) const = 0; williamr@4: }; williamr@4: williamr@4: williamr@4: class TAuthExpressionWrapper williamr@4: /** williamr@4: Simple wrapper around a pointer to an authentication williamr@4: expression. It is defined so the binary & and | operators williamr@4: can be overloaded to generate concise expressions. williamr@4: williamr@4: Like CAuthExpression, this class should not be williamr@4: used directly by clients, but via the AuthExpr, williamr@4: AuthAnd, and AuthOr functions, or via the overloaded williamr@4: & and | operators. For this reason, the constructors williamr@4: are not exported. williamr@4: williamr@4: @see AuthExpr williamr@4: @see AuthAnd williamr@4: @see AuthOr williamr@4: */ williamr@4: { williamr@4: public: williamr@4: /* @internalComponent*/ williamr@4: TAuthExpressionWrapper(CAuthExpression* aExpression); williamr@4: /* @internalComponent */ williamr@4: TAuthExpressionWrapper(TAuthPluginType aType); williamr@4: /* @internalComponent */ williamr@4: TAuthExpressionWrapper(TPluginId aPluginId); williamr@4: /* @internalComponent */ williamr@4: TAuthExpressionWrapper(); williamr@4: williamr@4: inline operator CAuthExpression*(); williamr@4: williamr@4: private: williamr@4: /** williamr@4: Pointer to the referenced authentication expression. williamr@4: This is NULL in OOM. williamr@4: */ williamr@4: CAuthExpression*const iPtr; williamr@4: }; williamr@4: williamr@4: williamr@4: IMPORT_C TAuthExpressionWrapper AuthExpr(TAuthPluginType aType); williamr@4: IMPORT_C TAuthExpressionWrapper AuthExpr(TPluginId aPluginId); williamr@4: IMPORT_C TAuthExpressionWrapper AuthExpr(); williamr@4: williamr@4: IMPORT_C TAuthExpressionWrapper AuthOr(CAuthExpression* aLeft, CAuthExpression* aRight); williamr@4: IMPORT_C TAuthExpressionWrapper AuthAnd(CAuthExpression* aLeft, CAuthExpression* aRight); williamr@4: williamr@4: williamr@4: #define AUTH_EXPR_BINARY_OPS williamr@4: #ifdef AUTH_EXPR_BINARY_OPS williamr@4: williamr@4: // These binary operators provide a more concise way to write williamr@4: // authentication expressions than AuthOr and AuthAnd. However, williamr@4: // their behaviour - dynamically allocating from the heap - is williamr@4: // non-obvious to a reader, so they are left as a build-time williamr@4: // option. williamr@4: williamr@4: inline TAuthExpressionWrapper operator&(TAuthExpressionWrapper aLeft, TAuthExpressionWrapper aRight); williamr@4: inline TAuthExpressionWrapper operator|(TAuthExpressionWrapper aLeft, TAuthExpressionWrapper aRight); williamr@4: williamr@4: #endif williamr@4: williamr@4: williamr@4: } // namespace AuthServer williamr@4: williamr@4: #include "authserver/authexpression.inl" williamr@4: williamr@4: #endif // EXPRESSION_H