/*******************************************************************************
;*******************************************************************************
;**                                                                           **
;**                  COPYRIGHT 2001-2012 NUANCE COMMUNICATIONS                **
;**                                                                           **
;**               NUANCE COMMUNICATIONS PROPRIETARY INFORMATION               **
;**                                                                           **
;**     This software is supplied under the terms of a license agreement      **
;**     or non-disclosure agreement with Nuance Communications and may not    **
;**     be copied or disclosed except in accordance with the terms of that    **
;**     agreement.                                                            **
;**                                                                           **
;*******************************************************************************
;**                                                                           **
;**     FileName: et9adebugbuild.h                                            **
;**                                                                           **
;**  Description: This file contains (or includes) defines that determine     **
;**  specific features to be included/excluded from a build.                  **
;**                                                                           **
;*******************************************************************************
;******************************************************************************/


#ifndef     _DEBUGBUILD_H_
    #define _DEBUGBUILD_H_      1


#ifndef MULTI_DB
#define MULTI_DB 0 /* Allow more than one file of a given language and more than one UDB. */
#define COMPARE_ALGORITHMS 0
#endif

    /*================================================================================= */
    /* This section of defines determine whether certain features are (or are not) */
    /*   implemented to help in debuggung the Swype algorithm. */
    /*================================================================================= */

        /* The following will display the bogus mouse data points as red dots (when they are within the boundaries of the */
        /*   keyboard), so that the user can be aware of what is actually going on with the processing. */
        #if HTC_TOUCH_HD_DEBUG_BUILD
            #ifndef     SHOW_ERRATIC_MOUSE_DATA
                #define SHOW_ERRATIC_MOUSE_DATA             1
            #endif
            #ifndef     DEBUG_ERRATIC_MOUSE_DATA
                #define DEBUG_ERRATIC_MOUSE_DATA            1
            #endif
/*          #ifndef     DEBUG_PENDING_MOUSE_DATA */
/*              #define DEBUG_PENDING_MOUSE_DATA            1 */
/*          #endif */
/*          #define OUTPUT_RAW_MOUSE_DATA                   1 */
/*          #define OUTPUT_ERRATIC_MOUSE_DATA               1 */
/*          #define DEBUG_GENERATE_ERRATIC_MOUSE_DATA       1 */
        #endif

    /* Define FILTER_ERRATIC_MOUSE_DATA to reject a mouse data point that suddenly jumps more than a threshold distance */
    /*   from the immediately preceding (non-rejected) mouse point. */
        /*#define SHOW_ERRATIC_MOUSE_DATA                   1 */
        /*#define OUTPUT_ERRATIC_MOUSE_DATA                 1 */
        /*#define DEBUG_ERRATIC_MOUSE_DATA                  1 */
            #if !FILTER_ERRATIC_MOUSE_DATA && (SHOW_ERRATIC_MOUSE_DATA || OUTPUT_ERRATIC_MOUSE_DATA || DEBUG_ERRATIC_MOUSE_DATA)
                #error  Must  define either FILTER_ERRATIC_MOUSE_DATA when defining SHOW_ERRATIC_MOUSE_DATA, OUTPUT_ERRATIC_MOUSE_DATA or DEBUG_ERRATIC_MOUSE_DATA!
            #endif
        /*#define OUTPUT_RAW_MOUSE_DATA                     1 */
        /*#define SHOW_RAW_MOUSE_DATA                       1 */
        /*#define DEBUG_SHOW_MOUSE_COUNTS                   1   // Tracks the counts of mouse data received for each path - Actual output controlled by DEBUG_SHOW_INFO_WITH_WORD control word "ShowMouse" */

    /* Define REPAIR_FALSE_PENUP (in OemBuild.h) to detect a sequential pair of PenUp - PenDown events that should be ignored */
    /*   (i.e. simply treated as one continuous, uninterrupted path).  Can also define REPAIR_AT_SCREEN_EDGE_SPECIAL_CASE */
        /*#define DEBUG_REPAIR_FALSE_PENUP                  1 */
        /*#define DEBUG_REPAIR_FALSE_PENUP2                 1   // Report when a PenUp/PenDown pair is concatenated */
        /*#define DEBUG_REPAIR_FALSE_PENUP3                 1   // Debug detection of screen-edge case */
        /*#define DEBUG_TAP_DETECTION                       1 */

    /* Define PERFORM_FUTURE_MATCH_CHECK to enable calls to CheckFutureKeyMatches().  This was implemented to detect cases */
    /*   where an IP was inappropriately assigned to a key that should have been omitted (unfortunately, the original case */
    /*   was not documented).  However, the code (likely) adds significant processing time, and is also likely the source */
    /*   of recognition failures such as "yours", where the "o" is omitted despite the entry of an error-free path. */
    /*   CK NOTE: Fix misrecognition of "yours" prior to #defining PERFORM_FUTURE_MATCH_CHECK, and confirm that the */
    /*   code to determine when CheckFutureKeyMatches is called does not add an unacceptable processing burden. */
    /* #define PERFORM_FUTURE_MATCH_CHECK                   1 */

    /* Define DIACRITIC_MENU_CAPTURES_MOUSE to allow tap-hold contact to slide into a diacritic menu to select a letter. */
    /*   Leave it undefined to allow the user to Swype a word even after a diacritic menu is displayed. */
    /*#define DIACRITIC_MENU_CAPTURES_MOUSE                 1   // Removed code in revision 769 */


    /*================================================================================= */
    /* This section of defines decipher what type of environment we are developing for. */
    /* Try to use the environment independent defines here! */
    /*================================================================================= */
/*  #define Z1_ANY_EMULATOR                                 1 */
/*  #define ENABLE_Z1_TRACE                                 1 */
    #define Z1DESKTOP_DEBUG                                 1   /* Leave defined for special builds for presentation demos */


    /*================================================================================= */
    /* Conditional code defines and constants for DEBUGGING only. */
    /*================================================================================= */

    /*  #define DEBUG_BUILD                                 1   // Get Info() system to work??? */

    /*  #define DEBUG_OPTIONS                               1   // Generates Debug output regarding the setting of user options from the registry */
    /*  #define DEBUG_STATS_DATA                            1   // Generates Debug output regarding the generation or recording of statistical tracking data */

    /*  #define DEBUG_WORD_LIST                             1   // Generates code to track details of Word object management */

    /*  #define DEBUG_THREAD_DETAILS                        1   // Generates code to track details of thread execution */
    /*  #define NOISY_THREAD_DETAILS                        1   // Generates code to output details of out-of-Z1-process thread execution */

    /*  #define INTERNAL_STATISTICS                         1   // Generates code to track detailed statistics on code performance, etc. */
    /*  #define ENABLE_Z1_TRACE                             1 */
    /*  #define INTERNAL_USE_ONLY                           1   // Generates code to output debug information on code performance, etc. */
                                                                /*   Control word: "SetZ1" - Toggles through default Z1 Operation levels of 250, 500, 750, 1000, and back to */
                                                                /*     the processor-speed-determined default value */
                                                                /*   Control word: "PenalTY" - Adjusts influence of assessed penalties on scoring */
    /*  #define ENABLE_IP_RENDERING                         1   // Enable display of IP analysis results */

    /*  #define TUNE_WORD_FREQUENCY                         1   // Allow manual re-definition of word frequencies */
    /*  #define DEBUG_SHOW_INFO_WITH_WORD                   1   // Generates code (that is individually enabled/disabled with "control" words) to output */
                                                                /*   various information appended to one or more words in the WCW */

                                                                /*   Control word: "AutoFlush" - Allows for automatically "flushing" statistics when certain parameters are changed. */
                                                                /*     Statistics results may/may not be output, and tracking values may/may not be reset to 0 (depending on */
                                                                /*     "AutoFlush" state */
                                                                /*   Control word: "ManualFlush" - Allows for immediate "flushing" of statistics. */
                                                                /*     Statistics results are output, and tracking values are reset to 0. */
                                                                /*   Control word: "AutoCycle" - Allows for automatically generating statistics for 100 words at Z1Operation */
                                                                /*     levels of 1000, 950, 750, 500, 250, 100, 50, and 0.  Statistics are reset and output for each cycle. */
                                                                /*   Control word: "CycleBump" - Forces AutoCycle mode to advance immediately to next Z1Operation level in the cycle. */
                                                                /*   Control word: "FoundTime" - Appends the time when a word's suffix, and when the word itself, was */
                                                                /*     found in the search process */
                                                                /*   Control word: "SearchTime" - Appends the time spent in the search process to the output word */
                                                                /*   Control word: "ShowRanks" - Appends the ranks of the key pair, suffix, and word itself to the output word */
                                                                /*   Control word: "ShowFreq" - Appends the frequency class of the word itself to the output word */
                                                                /*   Control word: "ShowPath" - Appends path length and searched path group information for the path to the output word */
                                                                /*   Control word: "ShowSpeed" - Appends stylus speed information for the path to the output word */
                                                                /*   Control word: "ShowMouse" - Appends mouse data count information for the path to the output word */
                                                                /*   Control word: "ShowScores" - Appends the combinedScore and NoPenaltyScore of the word itself to the output word */
                                                                /*   Control word: "ShowSearch" - Appends information regarding iterated searches to the output word */
                                                                /*   Control word: "LimitSearch" - Allows for turning on and off limits on suffix searching (that otherwise are always on) */
                                                                /*   Control word: "ShowCallers" - Generates reporting data on calls to TrackElapsedTime() that are over the limit */
                                                                /*   Control word: "InternalUse" - Turns reporting of "Internal Use" statistics on or off */
    /*  #define TRACK_HALTING                               1   // Used to get data on when the Search routine halts prior to searching all possible word candidates */
                                                                /*   Control word: "ShowHalting" */
    /*  #define DEBUG_SHOW_MOUSE_COUNTS                     1   //      Tracks the counts of mouse data received for each path - Actual output controlled by DEBUG_SHOW_INFO_WITH_WORD control word "ShowMouse" */
    /*  #define SHOW_RAW_MOUSE_DATA_TRACE                   1   //      Always draws trace as sequence of alternating colored data points */
    /*  #define FORCE_FREQ_FACTOR_INIT                      1   // Forces the FreqRangeRatio value to be re-initialized to its default value each time the SearchDB class is created */
    /*  #define SHOW_FREQ_RATIO_CHANGES                     1   // Outputs changes in the FreqRatio used and when a word's frequency class is promoted/demoted. */

    /*  #if DEBUG_SHOW_INFO_WITH_WORD || INTERNAL_USE_ONLY */
    /*      #define INTERNAL_STATISTICS                     1 */
    /*  #endif */

    #if Z1DESKTOP_DEBUG
        #define DEBUG_BUILD                                 1   /* Get Info() system to work (?) */

        /*  #define DEBUG_THREAD_DETAILS                    1   // Generates code to track details of thread execution */
        /*  #define ENABLE_Z1_TRACE                         1 */
        /*  #define ENABLE_IP_RENDERING                     1   // Enable display of IP analysis results */
        /*  #define SHOW_RAW_MOUSE_DATA_TRACE               1   // Always draws trace as sequence of alternating colored data points */
        /*  #define DEBUG_SHOW_MOUSE_COUNTS                 1   // Outputs the counts of mouse data received for each path - Actual output controlled by DEBUG_SHOW_INFO_WITH_WOR */
        /*  #define DEBUG_IPT                               1   // Support code for IP dumping */
        /*  #define DEBUG_IPT1A                             1   // Dump IPs at each new provisionally identified IP */
        /*  #define DEBUG_IPT1A1                            1   // Debug output on conversion of PEN_UP to SOFT_UP */
        /*  #define DEBUG_IPT1B                             1   // Dump IP table after each change */
        /*  #define DEBUG_IPT1C1                            1   // Dump final IP table prior to search */
        /*  #define DEBUG_IPT1C2                            1   // Dump final IP table following search */
        /*  #define DEBUG_IPT1C3A                           1   // Dump final IP table just before re-processing */
        /*  #define DEBUG_IPT1C3B                           1   // Dump final IP table just after re-processing */
        /*  #define DEBUG_IPT2                              1   // Detailed output on sign-change DoubleLetter IP identification */
        /*  #define DEBUG_IPT3                              1   // Detailed output on sign-change DoubleLetter IP identification - Include ouput on "No change" */
        /*  #define DEBUG_IPT4                              1   // Detailed output on PATHCHANGE IP identification - includes changes in D2SumAv, D2Threshold, etc. */
        /*  #define DEBUG_IPT5                              1   // Detailed output on secondary DoubleLetter IP identification - includes changes in D2Sum2Av, etc. */
        /*  #define DEBUG_IPT6                              1   // Detailed output on PathDivision IP identification */
        /*  #define DEBUG_IPT7                              1   // Detailed output on filtering errant data near PenDown/PenUp */
    #if (DEBUG_IPT1A || DEBUG_IPT1A1 || DEBUG_IPT1B || DEBUG_IPT1C1 || DEBUG_IPT1C2 || DEBUG_IPT1C3A || DEBUG_IPT1C3B)
        #ifdef      DEBUG_IPT
            #undef   DEBUG_IPT
        #endif
        #define     DEBUG_IPT                               1
    #endif
    #if (DEBUG_IPT2 || DEBUG_IPT3 || DEBUG_IPT4 || DEBUG_IPT5 || DEBUG_IPT6 || DEBUG_IPT7)
        #ifdef      DEBUG_IPT
            #undef   DEBUG_IPT
        #endif
        #define     DEBUG_IPT                               1
    #endif

    /*  #define ENABLE_Z1_TRACE                             1 */
    /*  #define INTERNAL_USE_ONLY                           1   // Generates code to output debug information on code performance, etc. */
                                                                /*   Control word: "SetZ1" - Toggles through default Z1 Operation levels of 250, 500, 750, 1000, and back to */
                                                                /*     the processor-speed-determined default value */
                                                                /*   Control word: "PenalTY" - Adjusts influence of assessed penalties on scoring */
    #endif      /* if Z1DESKTOP_DEBUG */

    #if Z1_ANY_EMULATOR
        /*  Conditional code defines and constants for EMULATOR only */
        /*  #define DEBUG_SHOW_MATCH_TRACE                  1   // Provides detailed debug output on the SearchDB() procedure - primarily for emulator use! */
        /*  #define DEBUG_SHOW_WCW_TRACE                    1   // Provides detailed debug output on word list creation process - primarily for emulator use! */
        /*  #define DEBUG_SHOW_MATCH_TRACE_SEARCH_PASSES    1   // Automatically trace words that appear as the default WCW word in earlier passes */
        /*  #define DEBUG_SHOW_MATCH_TRACE_4NP_WORDS        1   // Also dump trace of candidate list 4NP */
        /*  #define DEBUG_SHOW_SUFFIX_SCORES                1   // For each search, prints a TRACE() of the suffixes found and their scores (emulator use only) */
        /*  #define SHOW_KEYPAIR_LIST                       1   // Provides detailed debug output on identified key pairs - primarily for emulator use! */
        /*  #define DEBUG_SHOW_AMBIG_POINTS                 1   // Generate code to append the ambiguity score to each output word - Actual output controlled by DEBUG_SHOW_INFO_WITH_WORD */
                                                                /*   Control word: "ShowAmbig" */
        /*  #define DEBUG_SHOW_PATH_GROUPS                  1   // Generate code to append the actual path length and path group to each output word */
        /*  #define DEBUG_PATH_GROUP_DETAILS                1 */
        /*  #define SHOW_PATH_GROUP_OUTLIERS                1 */
        /*  #define OUTPUT_PATH_GROUP_BOUNDARIES            1   // Outputs a table of the boundary values for each path group */
        /*  #define DEBUG_COUNT_PATH_GROUPS                 1   // Outputs the numbe of words in each path group in the database */
        /*  #define SHOW_RAW_MOUSE_DATA_TRACE               1   // Always draws trace as sequence of alternating colored data points */
        /*  #define DEBUG_SHOW_MOUSE_COUNTS                 1   // Outputs the counts of mouse data received for each path - Actual output controlled by DEBUG_SHOW_INFO_WITH_WORD */

        /*  #define DEBUG_OPTIONS                           1   // Generates Debug output regarding the setting of user options from the registry */


        /*  #define DEBUG_THREAD_DETAILS                    1   // Generates code to track details of thread execution */
        /*  #define NOISY_THREAD_DETAILS                    1   // Generates code to output details of out-of-Z1-process thread execution */

        #ifndef     TRACK_STATISTICS
            #define TRACK_STATISTICS                        1
        #endif

        #ifndef     INTERNAL_STATISTICS
            #define INTERNAL_STATISTICS                     1   /* Generates code to track detailed statistics on code performance, etc. */
        #endif

        /*  #define ENABLE_Z1_TRACE                         1 */
        #define INTERNAL_USE_ONLY                           1   /* Generates code to output debug information on code performance, etc. */
                                                                /*   Control word: "SetZ1" - Toggles through default Z1 Operation levels of 250, 500, 750, 1000, and back to */
                                                                /*     the processor-speed-determined default value */
                                                                /*   Control word: "PenalTY" - Adjusts influence of assessed penalties on scoring */

        /*  #define DEBUG_IPT1A                             1   // Dump IPs at each new provisionally identified IP */
        /*  #define DEBUG_IPT1B                             1   // Dump IP table after each change */
        /*  #define DEBUG_IPT1C1                            1   // Dump final IP table prior to search */
        /*  #define DEBUG_IPT1C2                            1   // Dump final IP table following search */
        /*  #define DEBUG_IPT2                              1   // Detailed output on sign-change DoubleLetter IP identification */
        /*  #define DEBUG_IPT3                              1   // Detailed output on sign-change DoubleLetter IP identification - Include ouput on "No change" */
        /*  #define DEBUG_IPT4                              1   // Detailed output on PATHCHANGE IP identification - includes changes in D2SumAv, D2Threshold, etc. */
        /*  #define DEBUG_IPT5                              1   // Detailed output on secondary DoubleLetter IP identification - includes changes in D2Sum2Av, etc. */

        /*  #define TRACK_MAX_SLOPE_FACTOR                  1 */
    #endif      /* if Z1_ANY_EMULATOR */


#endif



/* eof */
