williamr@2: /* williamr@2: * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Interface for quering system version information. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef VERSION_INFO_H williamr@2: #define VERSION_INFO_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class RFs; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: /** williamr@2: * Class holds system version information. Version Info API provides williamr@2: * an interface for quering system version information. williamr@2: * williamr@2: * Usage: williamr@2: * williamr@2: * Get platform version information: williamr@2: * @code williamr@2: * // iFs contains open file server session williamr@2: * williamr@2: * VersionInfo::TPlatformVersion platformVersion; williamr@2: * // Select the overload of VersionInfo::GetVersion() that suits best for williamr@2: * // the current client. williamr@2: * User::LeaveIfError( VersionInfo::GetVersion( platformVersion, iFs ) ); williamr@2: * williamr@2: * // Now platformVersion contains platform version information. williamr@2: * williamr@2: * @endcode williamr@2: * williamr@2: * @lib platformver.lib williamr@2: * @since S60 3.2 williamr@2: */ williamr@2: williamr@2: NONSHARABLE_CLASS(VersionInfo) williamr@2: { williamr@2: williamr@2: public: williamr@2: /** williamr@2: * Class TVersionBase is a base class for all version information data. williamr@2: * @since S60 3.2 williamr@2: */ williamr@2: class TVersionBase williamr@2: { williamr@2: friend class VersionInfo; williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Constructor for subclasses williamr@2: * @since S60 3.2 williamr@2: * @param aType Sets type of version info specified by TVersionType williamr@2: */ williamr@2: inline TVersionBase( TInt aType ); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: TVersionBase(); williamr@2: williamr@2: private: williamr@2: /** Contains type of version info specified by TVersionType */ williamr@2: TInt iType; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Class TPlatformVersion stores platform version information. williamr@2: * The class is used as parameter in GetVersionInfo() methods. williamr@2: * @since S60 3.2 williamr@2: */ williamr@2: class TPlatformVersion : public TVersionBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: inline TPlatformVersion(); williamr@2: williamr@2: public: williamr@2: /** Contains the major version. For example 3 if S60 3.2 */ williamr@2: TUint16 iMajorVersion; williamr@2: williamr@2: /** Contains the minor version. For example 2 if S60 3.2 */ williamr@2: TUint16 iMinorVersion; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * This method gets the version information. williamr@2: * williamr@2: * @since S60 3.2 williamr@2: * @param aVersion Stores the version information williamr@2: * @return System wide error code williamr@2: * williamr@2: * @see TVersionBase williamr@2: */ williamr@2: IMPORT_C static TInt GetVersion( TVersionBase& aVersion ); williamr@2: williamr@2: /** williamr@2: * This method gets the version information. Given file server williamr@2: * session avoids the overhead of new file server connection. williamr@2: * williamr@2: * @since S60 3.2 williamr@2: * @param aVersion Stores the version information williamr@2: * @param aFs An opened file server session williamr@2: * @return System wide error code williamr@2: * williamr@2: * @see TVersionBase williamr@2: */ williamr@2: IMPORT_C static TInt GetVersion( TVersionBase& aVersion, RFs& aFs ); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: VersionInfo(); williamr@2: williamr@2: /** Used internally to detect type of version info */ williamr@2: enum TVersionType williamr@2: { williamr@2: EPlatformVersion = 0 williamr@2: }; williamr@2: }; williamr@2: williamr@2: #include "versioninfo.inl" williamr@2: williamr@2: #endif // VERSION_INFO_H williamr@2: williamr@2: // End of File