tracesrv/tracecompiler/test/MultipleCppTraceErrorApp/src/MultipleCppTraceErrorApp.cpp
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
parent 41 tracefw/tracecompiler/test/MultipleCppTraceErrorApp/src/MultipleCppTraceErrorApp.cpp@838cdffd57ce
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
//  Include Files  
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include "MultipleCppTraceErrorApp.h"
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <e32std.h>
hgs
parents:
diff changeset
    24
#include <e32cons.h>			// Console
hgs
parents:
diff changeset
    25
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    26
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    27
#include "MultipleCppTraceErrorAppTraces.h"
hgs
parents:
diff changeset
    28
#endif
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
//  Constants
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
_LIT(KTextConsoleTitle, "Console");
hgs
parents:
diff changeset
    33
_LIT(KTextFailed, " failed, leave code = %d");
hgs
parents:
diff changeset
    34
_LIT(KTextPressAnyKey, " [press any key]\n");
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
//  Global Variables
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
LOCAL_D CConsoleBase* console; // write all messages to this
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
//  Local Functions
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
LOCAL_C void MainL()
hgs
parents:
diff changeset
    44
    {
hgs
parents:
diff changeset
    45
    /****************************SHOULD GIVE ERRORS*******************************/
hgs
parents:
diff changeset
    46
    _LIT8(KTestDes,"Test Descriptor");
hgs
parents:
diff changeset
    47
    TInt32 x = 555;
hgs
parents:
diff changeset
    48
    TUint32 y = 666;
hgs
parents:
diff changeset
    49
    
hgs
parents:
diff changeset
    50
    //In these two cases Trace Compiler should give a error that an extension macro isn't necessary:
hgs
parents:
diff changeset
    51
    //"TraceErrorApp.cpp, line xx: Trace does not need to use extension macro"
hgs
parents:
diff changeset
    52
    OstTraceExt1( TRACE_FLOW, TEST1_MAINL, "MainL(): x=%d" , x );
hgs
parents:
diff changeset
    53
    OstTraceExt1( TRACE_FLOW, TEST2_MAINL, "MainL(): y=%u" , y );
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
    //This should give an error stating that the trace name is duplicated
hgs
parents:
diff changeset
    56
    //"TraceErrorApp.cpp, line xx: Trace is used from multiple places"
hgs
parents:
diff changeset
    57
    OstTrace0( TRACE_FLOW, TEST3_MAINL, "MainL()" );
hgs
parents:
diff changeset
    58
    OstTrace0( TRACE_FLOW, TEST3_MAINL, "MainL()" );
hgs
parents:
diff changeset
    59
    
hgs
parents:
diff changeset
    60
    //This should NOT give an error stating that the arguments don't match format spec
hgs
parents:
diff changeset
    61
    //OstTraceExt2( TRACE_FLOW, TEST4_MAINL, "MainL(): x=%d;KTestDes=%d", x, KTestDes );
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    //Wrong API i.e more parameters than it takes
hgs
parents:
diff changeset
    64
    //"TraceErrorApp.cpp, line xx: Parameter count does not match the format specification"
hgs
parents:
diff changeset
    65
    OstTrace0( TRACE_FLOW, TEST5_MAINL, "MainL(): x=%d" ,x);
hgs
parents:
diff changeset
    66
    
hgs
parents:
diff changeset
    67
    //Too many User-defined group ids should be max of 32 but there are 33 here), should get an error
hgs
parents:
diff changeset
    68
    //"You have exceeded the number of Group IDs you have allocated."
hgs
parents:
diff changeset
    69
    OstTrace0( MY_GROUP_ID1, TEST_MAINL6, "MainL()" );
hgs
parents:
diff changeset
    70
    OstTrace0( MY_GROUP_ID2, TEST_MAINL7, "MainL()" );
hgs
parents:
diff changeset
    71
    OstTrace0( MY_GROUP_ID3, TEST_MAINL8, "MainL()" );
hgs
parents:
diff changeset
    72
    OstTrace0( MY_GROUP_ID4, TEST_MAINL9, "MainL()" );
hgs
parents:
diff changeset
    73
    OstTrace0( MY_GROUP_ID5, TEST_MAINL10, "MainL()" );
hgs
parents:
diff changeset
    74
    OstTrace0( MY_GROUP_ID6, TEST_MAINL11, "MainL()" );
hgs
parents:
diff changeset
    75
    OstTrace0( MY_GROUP_ID7, TEST_MAINL12, "MainL()" );
hgs
parents:
diff changeset
    76
    OstTrace0( MY_GROUP_ID8, TEST_MAINL13, "MainL()" );
hgs
parents:
diff changeset
    77
    OstTrace0( MY_GROUP_ID9, TEST_MAINL14, "MainL()" );
hgs
parents:
diff changeset
    78
    OstTrace0( MY_GROUP_ID10, TEST_MAINL15, "MainL()" );
hgs
parents:
diff changeset
    79
    OstTrace0( MY_GROUP_ID11, TEST_MAINL16, "MainL()" );
hgs
parents:
diff changeset
    80
    OstTrace0( MY_GROUP_ID12, TEST_MAINL17, "MainL()" );
hgs
parents:
diff changeset
    81
    OstTrace0( MY_GROUP_ID13, TEST_MAINL18, "MainL()" );
hgs
parents:
diff changeset
    82
    OstTrace0( MY_GROUP_ID14, TEST_MAINL19, "MainL()" );
hgs
parents:
diff changeset
    83
    OstTrace0( MY_GROUP_ID15, TEST_MAINL20, "MainL()" );
hgs
parents:
diff changeset
    84
    OstTrace0( MY_GROUP_ID16, TEST_MAINL21, "MainL()" );
hgs
parents:
diff changeset
    85
    OstTrace0( MY_GROUP_ID17, TEST_MAINL22, "MainL()" );
hgs
parents:
diff changeset
    86
    OstTrace0( MY_GROUP_ID18, TEST_MAINL23, "MainL()" );
hgs
parents:
diff changeset
    87
    OstTrace0( MY_GROUP_ID19, TEST_MAINL24, "MainL()" );
hgs
parents:
diff changeset
    88
    OstTrace0( MY_GROUP_ID20, TEST_MAINL25, "MainL()" );
hgs
parents:
diff changeset
    89
    OstTrace0( MY_GROUP_ID21, TEST_MAINL26, "MainL()" );
hgs
parents:
diff changeset
    90
    OstTrace0( MY_GROUP_ID22, TEST_MAINL27, "MainL()" );
hgs
parents:
diff changeset
    91
    OstTrace0( MY_GROUP_ID23, TEST_MAINL28, "MainL()" );
hgs
parents:
diff changeset
    92
    OstTrace0( MY_GROUP_ID24, TEST_MAINL29, "MainL()" );
hgs
parents:
diff changeset
    93
    OstTrace0( MY_GROUP_ID25, TEST_MAINL30, "MainL()" );
hgs
parents:
diff changeset
    94
    OstTrace0( MY_GROUP_ID26, TEST_MAINL31, "MainL()" );
hgs
parents:
diff changeset
    95
    OstTrace0( MY_GROUP_ID27, TEST_MAINL32, "MainL()" );
hgs
parents:
diff changeset
    96
    OstTrace0( MY_GROUP_ID28, TEST_MAINL33, "MainL()" );
hgs
parents:
diff changeset
    97
    OstTrace0( MY_GROUP_ID29, TEST_MAINL34, "MainL()" );
hgs
parents:
diff changeset
    98
    OstTrace0( MY_GROUP_ID30, TEST_MAINL35, "MainL()" );
hgs
parents:
diff changeset
    99
    OstTrace0( MY_GROUP_ID31, TEST_MAINL36, "MainL()" );
hgs
parents:
diff changeset
   100
    OstTrace0( MY_GROUP_ID32, TEST_MAINL37, "MainL()" );
hgs
parents:
diff changeset
   101
    OstTrace0( MY_GROUP_ID33, TEST_MAINL38, "MainL()" );    
hgs
parents:
diff changeset
   102
    /*****************************************************************************/
hgs
parents:
diff changeset
   103
    
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    /******************************SHOULD GIVE WARNINGS***************************/
hgs
parents:
diff changeset
   106
    //Should get warnings from using deprecated GIDs
hgs
parents:
diff changeset
   107
    //e.g. "Deprecated group TRACE_API detected. Updating to TRACE_BORDER in dictionary. Please update source code!"
hgs
parents:
diff changeset
   108
    OstTrace0( TRACE_API, TEST_MAINL39, "MainL()" );  
hgs
parents:
diff changeset
   109
    OstTrace0( TRACE_IMPORTANT, TEST_MAINL40, "MainL()" );  
hgs
parents:
diff changeset
   110
    OstTrace0( TRACE_DETAILED, TEST_MAINL41, "MainL()" );
hgs
parents:
diff changeset
   111
    OstTrace0( TRACE_DEBUG, TEST_MAINL42, "MainL()" );  
hgs
parents:
diff changeset
   112
    /*****************************************************************************/
hgs
parents:
diff changeset
   113
    
hgs
parents:
diff changeset
   114
    CallSomeMoreTraceStatements();
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    console->Write(_L("Hello, world!\n"));
hgs
parents:
diff changeset
   117
    }
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
LOCAL_C void DoStartL()
hgs
parents:
diff changeset
   120
    {
hgs
parents:
diff changeset
   121
    // Create active scheduler (to run active objects)
hgs
parents:
diff changeset
   122
    CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
hgs
parents:
diff changeset
   123
    CleanupStack::PushL(scheduler);
hgs
parents:
diff changeset
   124
    CActiveScheduler::Install(scheduler);
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    MainL();
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
    // Delete active scheduler
hgs
parents:
diff changeset
   129
    CleanupStack::PopAndDestroy(scheduler);
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
//  Global Functions
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
GLDEF_C TInt E32Main()
hgs
parents:
diff changeset
   135
    {
hgs
parents:
diff changeset
   136
    // Create cleanup stack
hgs
parents:
diff changeset
   137
    __UHEAP_MARK;
hgs
parents:
diff changeset
   138
    CTrapCleanup* cleanup = CTrapCleanup::New();
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    // Create output console
hgs
parents:
diff changeset
   141
    TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(
hgs
parents:
diff changeset
   142
            KConsFullScreen, KConsFullScreen)));
hgs
parents:
diff changeset
   143
    if (createError)
hgs
parents:
diff changeset
   144
        return createError;
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    // Run application code inside TRAP harness, wait keypress when terminated
hgs
parents:
diff changeset
   147
    TRAPD(mainError, DoStartL());
hgs
parents:
diff changeset
   148
    if (mainError)
hgs
parents:
diff changeset
   149
        console->Printf(KTextFailed, mainError);
hgs
parents:
diff changeset
   150
    console->Printf(KTextPressAnyKey);
hgs
parents:
diff changeset
   151
    console->Getch();
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
    delete console;
hgs
parents:
diff changeset
   154
    delete cleanup;
hgs
parents:
diff changeset
   155
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   156
    return KErrNone;
hgs
parents:
diff changeset
   157
    }
hgs
parents:
diff changeset
   158