devicediagnosticsfw/diagpluginbase/inc/diagresultdetailbasicitem.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devicediagnosticsfw/diagpluginbase/inc/diagresultdetailbasicitem.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,166 @@
+/*
+* 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:  Basic Diagnostics Test Result Detail Item class
+*
+*/
+
+
+#ifndef DIAGRESULTDETAILBASICITEM_H
+#define DIAGRESULTDETAILBASICITEM_H
+
+// INCLUDES
+#include <e32base.h>                     //  CBase
+
+// FORWARD DECLARATIONS
+class RWriteStream;
+class RReadStream;
+
+/**
+*  Diagnostics Result Database Detail  Item Classe.
+*
+*  This  class stores information needed for each entry in
+*  CDiagResultDetailBasic.
+*
+*  @since S60 v5.0
+*/
+class CDiagResultDetailBasicItem : public CBase
+    {
+public: // Data Types
+    enum TFieldType 
+        {
+        ETypeInt    = 0,    // data is TInt type
+        ETypeDes16,         // data is TDesC16 type
+        ETypeDes8,          // data is TDesC8 type
+        };
+
+public: // Constructors
+    /**
+    * Two-phase constructor.
+    *
+    * @param aFieldId   - Field Id.
+    * @param aFieldName - Textual description of the field.
+    * @param aValue     - TInt value.
+    */
+    static CDiagResultDetailBasicItem* NewL( TInt aFieldId,
+                                             const TDesC8& aFieldName,
+                                             TInt aValue );
+
+    /**
+    * Two-phase constructor.
+    *
+    * @param aFieldId   - Field Id.
+    * @param aFieldName - Textual description of the field.
+    * @param aValue     - TDesC8 Text value.
+    */
+    static CDiagResultDetailBasicItem* NewL( TInt aFieldId,
+                                             const TDesC8& aFieldName,
+                                             const TDesC8& aValue );
+
+    /**
+    * Two-phase constructor.
+    *
+    * @param aFieldId   - Field Id
+    * @param aFieldName - Textual description of the field.
+    * @param aValue     - TDesC16 Text value.
+    */
+    static CDiagResultDetailBasicItem* NewL( TInt aFieldId,
+                                                const TDesC8& aFieldName,
+                                                const TDesC16& aValue );
+
+    /**
+    * Two-phase constructor with RReadStream
+    *
+    * @param aReadStream - stream to internalize from
+    */
+    static CDiagResultDetailBasicItem* NewL( RReadStream& aReadStream );
+
+    /**
+    * Destructor
+    */
+    ~CDiagResultDetailBasicItem();
+
+    /**
+    * Get the field Id.
+    *
+    * @return Field Id.
+    */
+    TInt FieldId() const;
+
+    /**
+    * Get the name of the field. 
+    *
+    * @return Name of the field.
+    */
+    const TDesC8& FieldName() const;
+
+    /**
+    * Get the type of the field.
+    *
+    * @return Type of the field. 
+    */
+    TFieldType Type() const;
+
+    /**
+    * Get value. If invalid aFieldId is passed, or type does not 
+    * match, function will leave with KErrArgument. 
+    *
+    * @param aValue - Output paramater. The data will be stored
+    *   here.
+    * @param KErrArgument if type does not match
+    */
+    TInt GetValue( TInt& aValue ) const;
+    TInt GetValue( TPtrC8& aValue ) const;
+    TInt GetValue( TPtrC16& aValue ) const;
+
+    /**
+    * Externalize to a stream.
+    *
+    */
+    void ExternalizeL( RWriteStream& aWriteStream ) const;
+
+private:  
+    /**
+    * Constructor 
+    *
+    */
+    CDiagResultDetailBasicItem();
+
+    /**
+    * Internalize from stream.
+    *
+    * @param aReadStream - stream to read from.
+    */
+    void InternalizeL( RReadStream& aReadStream );
+
+
+private: // Private Data Types
+    
+    typedef union 
+        {
+        HBufC16*    iBuffer16;
+        HBufC8*     iBuffer8;
+        TInt        iInt;
+        } TValue;
+
+private: // Data
+    TFieldType  iFieldType;
+    TInt        iFieldId;
+    TValue      iValue;
+    HBufC8*     iFieldName;
+    };
+
+#endif // DIAGRESULTDETAILBASICITEM_h
+
+// End of File
+