localconnectivityservice/locod/inc/utils.h
author hgs
Fri, 25 Jun 2010 16:54:01 +0800
changeset 29 3ae5cb0b4c02
permissions -rw-r--r--
201025_07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
* All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
* Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
* Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
* Description:  Defines utility functions.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
#ifndef LOCODUTIL_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
#define LOCODUTIL_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include <e32base.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
template <class T>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
class CleanupResetDestroyClose
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
	{
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
public:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
	inline static void PushL(T& aRef) 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
	    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
	    CleanupStack::PushL(TCleanupItem(&ResetDestroyClose,&aRef));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
	    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
private:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
	static void ResetDestroyClose(TAny *aPtr)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
    	{
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
    	static_cast<T*>(aPtr)->ResetAndDestroy();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
    	static_cast<T*>(aPtr)->Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
    	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
	};
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
/**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
 * Pushes an object into CleanupStack and specifies the cleanup 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
 * function as ResetAndDestroy() and Close().
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
template <class T>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
inline void CleanupResetDestroyClosePushL(T& aRef)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
	{CleanupResetDestroyClose<T>::PushL(aRef);}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
#endif // LOCODUTIL_H