locsrv_pub/landmarks_api/inc/epos_cposlandmarkdatabaseextended.h
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locsrv_pub/landmarks_api/inc/epos_cposlandmarkdatabaseextended.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2007 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:  SDK/S60, Landmarks API
+*
+*/
+
+
+#ifndef EPOS_CPOSLANDMARKDATABASEEXTENDED_H_
+#define EPOS_CPOSLANDMARKDATABASEEXTENDED_H_
+
+#include "EPos_CPosLandmarkDatabase.h"
+
+class CPosLmCategoryManager;
+
+/**
+*  Handle to a landmark database.
+*
+*  This class defines extensions to the functionality of @ref CPosLandmarkDatabase class.
+*
+*  @see CPosLandmarkDatabase
+*  @since S60 3.2
+*  @lib eposlandmarks.lib.
+*/
+class CPosLandmarkDatabaseExtended :  public CPosLandmarkDatabase
+    {
+    public:
+        
+        /**
+         * Opens the default landmark database.
+         *
+         * This method is the same as @ref CPosLandmarkDatabase::OpenL().
+         *
+         * The client takes ownership of the returned database handle.
+         *
+         * The database may have to be initialized before it can be used, see
+         * @ref IsInitializingNeeded and @ref InitializeL.
+         *
+         * This function requires @p ReadUserData capability.
+         *
+         * @leave KErrNotSupported This extended interface is not supported
+         *                         for default database.
+         * @returns A handle to the open database.
+         * @see CPosLandmarkDatabase::OpenL()
+         */
+        IMPORT_C static CPosLandmarkDatabaseExtended* OpenL();
+
+        /**
+         * Opens a specific landmark database.
+         *
+         * This method is the same as @ref CPosLandmarkDatabase::OpenL(const TDesC&).
+         *
+         * The client refers to a database by URI. The URI consists of a
+         * protocol specifier and the database location: "protocol://location".
+         * If the client does not specify a protocol, "file://" will be assumed.
+         *
+         * For local landmark databases, the URI consists of the drive and the
+         * database file name, e.g. "c:landmarks.ldb". The path cannot be
+         * specified by the client. The extension of the database file name must
+         * be "ldb" otherwise the client will get the error @p KErrArgument.
+         *
+         * If the client specifies a local database and does not specify the
+         * drive letter, e.g. "landmarks.ldb", default database drive will be assumed.
+         *
+         * The client takes ownership of the returned database handle.
+         *
+         * The database may have to be initialized before it can be used, see
+         * @ref IsInitializingNeeded and @ref InitializeL.
+         *
+         * This function requires @p ReadUserData capability.
+         *
+         * @param[in] aDatabaseUri The URI of the database to open.
+         * @returns A handle to the open database.
+         *
+         * @leave KErrArgument Extension of the local database name is not "ldb".
+         * @leave KErrNotSupported This extended interface is not supported
+         *                         for specified protocol.
+         * @see CPosLandmarkDatabase::OpenL(const TDesC&)
+         */
+        IMPORT_C static CPosLandmarkDatabaseExtended* OpenL( const TDesC&  aDatabaseUri );
+
+        /**
+         * Destructor.
+         */
+        IMPORT_C virtual ~CPosLandmarkDatabaseExtended();
+
+    public:
+
+        /** Returns total amount of landmarks in the database.
+         *  @return Number of landmarks in the database or negative error code:
+         *      - KErrNotSupported if not supported in current database.
+         *      - KErrPosLmNotInitialized if database is not yet initialized. */
+        IMPORT_C TInt LandmarksCount();
+
+        /** Returns total amount of landmark categories in the database.
+         *  @return Number of landmark categories in the database or negative error code.
+         *      - KErrNotSupported if not supported in current database.
+         *      - KErrPosLmNotInitialized if database is not yet initialized. */
+        IMPORT_C TInt CategoriesCount();
+
+    public:
+        
+        /** Returns reference to category manager instance for this database. */
+        virtual CPosLmCategoryManager& CategoryManager() = 0;
+
+    protected:
+
+        /** Returns pointer to extension interface. Type of the 
+         *  requested extension interface is supplied by caller in aExtensionId.
+         *
+         *  Ownership of returned object is not transferred to caller, it is kept by
+         *  implementation.
+         *  
+		 *  @param[in] aExtensionUid Type of requested extension
+		 *  @return Pointer to extension implementation, or NULL if not supported.
+		 */
+        virtual void* GetExtension( TUid aExtensionUid ) = 0;
+
+    protected:
+
+        // C++ constructor.
+        IMPORT_C CPosLandmarkDatabaseExtended();
+
+    private:
+
+        // Prohibit copy constructor
+        CPosLandmarkDatabaseExtended( const CPosLandmarkDatabaseExtended& );
+        // Prohibit assigment operator
+        CPosLandmarkDatabaseExtended& operator= ( const CPosLandmarkDatabaseExtended& );
+        
+    private:
+        TInt8 reserved[32];    
+    };
+
+
+#endif /*EPOS_CPOSLANDMARKDATABASEEXTENDED_H_*/