devsound/a3ftrace/src/a3f_trace_heap.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devsound/a3ftrace/src/a3f_trace_heap.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,179 @@
+// Copyright (c) 2004-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:
+//
+
+
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <e32svr.h>
+#include "a3f_trace_heap.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+TUint32* 	TraceHeap::iTraceMask = NULL;
+TUint32* 	TraceHeap::iTraceLevel = NULL;
+TBool*      TraceHeap::iApiOnly = NULL;
+RHeap* 		TraceHeap::iTraceHeap = NULL;
+
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TraceHeap::CreateL(const TUint aDefaultMask)
+    {
+    // check that the heap is not already created
+	if ( TraceHeap::iTraceHeap )
+	    {
+	    return;
+	    }
+	    
+	// create a heap private to the owning process (heap can also be created as global)
+	TraceHeap::iTraceHeap = UserHeap::ChunkHeap( NULL, KMinHeapSize, KMinHeapSize, KMinHeapGrowBy );
+	__ASSERT_ALWAYS( TraceHeap::iTraceHeap, User::Leave(KErrGeneral));
+	
+	// create iTrace... variables
+	TraceHeap::iTraceMask = (TUint32*)TraceHeap::iTraceHeap->AllocL( sizeof(TUint32) );
+	*TraceHeap::iTraceMask = aDefaultMask;
+    TraceHeap::iTraceLevel = (TUint32*)TraceHeap::iTraceHeap->AllocL( sizeof(TUint32) );
+	*TraceHeap::iTraceLevel = 0;		
+    TraceHeap::iApiOnly = (TBool*)TraceHeap::iTraceHeap->AllocL( sizeof(TBool) );
+	*TraceHeap::iApiOnly = EFalse;		
+    }
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 TraceHeap::TraceMask()
+	{
+	return *TraceHeap::iTraceMask;
+	}
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TraceHeap::SetTraceMask(
+	const TUint32 aTraceMask )
+	{
+    if ( !TraceHeap::iTraceHeap )
+        {
+        TRAP_IGNORE(TraceHeap::CreateL());   
+        }
+	*TraceHeap::iTraceMask = aTraceMask;
+	}
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool TraceHeap::IsMaskOn(
+	const TUint32 aMask )
+	{
+	return ( *TraceHeap::iTraceMask & aMask );
+	}
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TraceHeap::SetLevel( const TUint32 aTraceLevel )
+    {
+    *TraceHeap::iTraceLevel = aTraceLevel;
+    }
+    
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//    
+EXPORT_C TBool TraceHeap::IsBelowLevel( const TUint32 aLevel )
+    {
+    return (*TraceHeap::iTraceLevel > aLevel);
+    }
+    
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//    
+EXPORT_C TUint32 TraceHeap::TraceLevel()
+    {
+    return *TraceHeap::iTraceLevel;
+    }
+    
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//    
+EXPORT_C TBool TraceHeap::IsApiOnly()
+    {
+    return *iApiOnly;
+    }
+
+// -----------------------------------------------------------------------------
+// ?classname::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//    
+EXPORT_C void TraceHeap::SetApiOnly( const TBool aApiOnly)
+    {
+    *iApiOnly = aApiOnly;
+    }
+
+//  End of File  
+