diff -r 000000000000 -r c53acadfccc6 metadataengine/server/inc/mdsquerycriteriadeserialization.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/metadataengine/server/inc/mdsquerycriteriadeserialization.h Mon Jan 18 20:34:07 2010 +0200 @@ -0,0 +1,177 @@ +/* +* Copyright (c) 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: Class to deserialize client query cliteria +* +*/ + +#ifndef __MDSQUERYCRITERIADESERIALIZATION_H__ +#define __MDSQUERYCRITERIADESERIALIZATION_H__ + +#include +#include +#include + +#include "mdccommon.h" +#include "mdcserializationbuffer.h" +// added for serialization definitions !! +#include "mdscommoninternal.h" +// end + +/** + * Query criteria serialization. + */ +class CMdSQueryCriteriaDeserialization : public CBase + { + friend class CMdSFindSqlClause; + +public: + + /* Constructors and destructor. */ + + /** + * Constructs a new serialized query criteria. + * @param aCondition root logic condition to serialize + * + * @return query criteria serialization instance + * + * @leave KErrNotSupported result mode and query type don't match + * @leave KErrCompletion result mode is EModeDistinctValues and query + * criteria is incorrect + */ + static CMdSQueryCriteriaDeserialization* NewL(CMdCSerializationBuffer& aSerializationBuffer); + + /** + * Constructs a new serialized query criteria and leaves it in the + * cleanup stack. + * @param aCondition root logic condition to serialize + * + * @return query criteria serialization instance + * + * @leave KErrNotSupported result mode and query type don't match + * @leave KErrCompletion result mode is EModeDistinctValues and query + * criteria is incorrect + */ + static CMdSQueryCriteriaDeserialization* NewLC(CMdCSerializationBuffer& aSerializationBuffer); + + /** + * Destructor. + */ + virtual ~CMdSQueryCriteriaDeserialization(); + + /** + * Returns pointer to the serialized data (read only) + */ + TPtr8 Buffer() const; + + /** + * Returns pointer to the serialized data (read only) + */ + const TPtr8* BufferPtr() const; + + /** + * Returns pointer to the serialization buffer + */ + CMdCSerializationBuffer& SerializationBuffer(); + +protected: + + /** + * Returns query's result mode. + * + * @return query result mode + */ + TQueryResultMode ResultModeL(); + + /** + * Returns query's type. + * + * @return query type + */ + TQueryType QueryTypeL(); + + /** + * Returns query's namespace definition ID. + * + * @return namespace definition ID + */ + TDefId NamespaceDefIdL(); + + /** + * Returns query's object definition ID. + * + * @return object definition ID + */ + TDefId ObjectDefIdL(); + + /** + * Moves position to begin of query's object definitions IDs. + * + * @return if offset is KNoOffset return EFalse, else return ETrue and move + * to that position + */ + TBool ObjectDefsIdsL(); + + /** + * Returns query's result's limit value. + * + * @return limit value + */ + TUint32 LimitL(); + + /** + * Returns query's internal optimization flags. + * + * @return query's internal optimization flags + */ + TUint32 OptimizationFlagsL(); + + /** + * Returns query's result's offset value. + * + * @return offset value + */ + TUint32 OffsetL(); + + /** + * Moves position to begin of query's root condition. + */ + void RootConditionL(); + + /** + * Moves position to begin of query's order rules. + */ + void OrderRulesL(); + + /** + * Moves position to begin of query's property filter. + */ + void PropertyFiltersL(); + +private: + + /* Constructors. */ + + /** + * Constructor. + */ + CMdSQueryCriteriaDeserialization(CMdCSerializationBuffer& aSerializedBuffer); + +private: + + /** Serialized query criteria. */ + CMdCSerializationBuffer& iSerializedBuffer; + }; + + +#endif // __MDEQUERYCRITERIASERIALIZATION_H__