fontservices/textbase/sgdi/TextBasePanic.h
author hgs
Mon, 12 Jul 2010 14:38:26 +0800
changeset 45 662fa7de7023
permissions -rw-r--r--
201024_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
662fa7de7023 201024_05
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
662fa7de7023 201024_05
hgs
parents:
diff changeset
     2
// All rights reserved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
662fa7de7023 201024_05
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
662fa7de7023 201024_05
hgs
parents:
diff changeset
     7
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
     8
// Initial Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    10
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    11
// Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    12
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    13
// Description:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    14
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    15
662fa7de7023 201024_05
hgs
parents:
diff changeset
    16
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
    17
 @internalComponent
662fa7de7023 201024_05
hgs
parents:
diff changeset
    18
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
    19
662fa7de7023 201024_05
hgs
parents:
diff changeset
    20
#ifndef __TEXTBASEPANIC_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    21
#define __TEXTBASEPANIC_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    22
662fa7de7023 201024_05
hgs
parents:
diff changeset
    23
//#ifdef __GDI_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    24
void TextBasePanic(TTextBasePanic aPanicCode);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    25
void TextBasePanicWithCondAndInfo(TTextBasePanic aPanic, const TDesC& aCondition, const TDesC& aFileName, const TDesC& aPanicName, TInt aLine);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    26
//#endif 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    27
662fa7de7023 201024_05
hgs
parents:
diff changeset
    28
void TextBasePanicLogWithInfo(const TDesC& aCommand, const TDesC& aCondition, const TDesC& aFileName, TInt aLine);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    29
662fa7de7023 201024_05
hgs
parents:
diff changeset
    30
// helper macros
662fa7de7023 201024_05
hgs
parents:
diff changeset
    31
#define TEXTBASE_ASSERT_FILENAME(f)	_LIT(KPanicFileName, f);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    32
#define TEXTBASE_ASSERT_PANICNAME(p)	_LIT(KPanicEnum ## p, # p);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    33
#define TEXTBASE_ASSERT_PANICCOMMAND(a)	_LIT(KPanicCommand, a);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    34
#define TEXTBASE_ASSERT_CONDITION(c)	_LIT(KPanicCondition, c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    35
662fa7de7023 201024_05
hgs
parents:
diff changeset
    36
/* Use these macros for GDI Asserts & Panics with diagnostic logging:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    37
   TEXTBASE_ASSERT_ALWAYS, TEXTBASE_ASSERT_ALWAYS_GENERAL, TEXTBASE_ASSERT_DEBUG
662fa7de7023 201024_05
hgs
parents:
diff changeset
    38
   and TEXTBASE_ASSERT_DEBUG_GENERAL
662fa7de7023 201024_05
hgs
parents:
diff changeset
    39
   Note that the "do { ... } while (0)" construction forces the invocation to have a ';'
662fa7de7023 201024_05
hgs
parents:
diff changeset
    40
   and makes the macro expansion safe in nested "if ... else ..." clauses that forget to use the
662fa7de7023 201024_05
hgs
parents:
diff changeset
    41
   { braces } in the Coding Standard.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    42
 */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    43
662fa7de7023 201024_05
hgs
parents:
diff changeset
    44
#define TEXTBASE_ASSERT_ALWAYS(c, p) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    45
		do  { \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    46
			if (!(c)) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    47
				{ \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    48
				TEXTBASE_ASSERT_FILENAME(__FILE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    49
				TEXTBASE_ASSERT_PANICNAME(p); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    50
				TEXTBASE_ASSERT_CONDITION(#c); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    51
				TextBasePanicWithCondAndInfo(p, KPanicCondition, KPanicFileName, KPanicEnum ## p, __LINE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    52
				} \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    53
			} while (0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    54
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
    55
#define TEXTBASE_ASSERT_ALWAYS_GENERAL(c, a) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    56
		do  { \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    57
			if (!(c)) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    58
				{ \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    59
				TEXTBASE_ASSERT_FILENAME(__FILE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    60
				TEXTBASE_ASSERT_PANICCOMMAND(#a); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    61
				TEXTBASE_ASSERT_CONDITION(#c); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    62
				TextBasePanicLogWithInfo(KPanicCondition, KPanicCommand, KPanicFileName, __LINE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    63
				a ; \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    64
				} \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    65
			} while (0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    66
662fa7de7023 201024_05
hgs
parents:
diff changeset
    67
#if defined(_DEBUG)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    68
#define TEXTBASE_ASSERT_DEBUG(c, p) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    69
		do  { \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    70
			if (!(c)) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    71
				{ \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    72
				TEXTBASE_ASSERT_FILENAME(__FILE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    73
				TEXTBASE_ASSERT_PANICNAME(p); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    74
				TEXTBASE_ASSERT_CONDITION(#c); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    75
				TextBasePanicWithCondAndInfo(p, KPanicCondition, KPanicFileName, KPanicEnum ## p, __LINE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    76
				} \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    77
			} while (0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    78
662fa7de7023 201024_05
hgs
parents:
diff changeset
    79
#define TEXTBASE_ASSERT_DEBUG_GENERAL(c, a) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    80
		do  { \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    81
			if (!(c)) \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    82
				{ \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    83
				TEXTBASE_ASSERT_FILENAME(__FILE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    84
				TEXTBASE_ASSERT_PANICCOMMAND(#a); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    85
				TEXTBASE_ASSERT_CONDITION(#c); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    86
				TextBasePanicLogWithInfo(KPanicCondition, KPanicCommand, KPanicFileName, __LINE__); \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    87
				a ; \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    88
				} \
662fa7de7023 201024_05
hgs
parents:
diff changeset
    89
			} while (0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    90
			
662fa7de7023 201024_05
hgs
parents:
diff changeset
    91
#else
662fa7de7023 201024_05
hgs
parents:
diff changeset
    92
#define TEXTBASE_ASSERT_DEBUG(c, p)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    93
#define TEXTBASE_ASSERT_DEBUG_GENERAL(c, p)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    94
662fa7de7023 201024_05
hgs
parents:
diff changeset
    95
#endif
662fa7de7023 201024_05
hgs
parents:
diff changeset
    96
662fa7de7023 201024_05
hgs
parents:
diff changeset
    97
#endif