SIBCDebug.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Crosswalk team
00004 //
00005 // Copyright 2008 Autodesk, Inc.  All rights reserved.  
00006 // Use of this software is subject to the terms of the Autodesk license agreement 
00007 // provided at the time of installation or download, or which otherwise accompanies 
00008 // this software in either electronic or hard copy form.
00009 //
00010 //***************************************************************************************
00011 
00012 // ******************* OBJECT SCRIPTING DOCUMENTATION ******************************
00013 // <object id="CSIDebug" introduced="X.XX">
00014 // <description> Debug mechanism. </description>
00015 // <methods>
00016 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00017 // <method id="CSIDebug.CSIDebug">
00018 // <description> CSIDebug Default constructor </description>
00019 // <parameters>
00020 // <parameter name="void" required="yes" io="Input">
00021 //  <type>Void</type>
00022 //  <description> Void </description>
00023 // </parameter>
00024 // </parameters>
00025 // <return>Void</return>
00026 // </method>
00027 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00028 // <method id="CSIDebug.Dump">
00029 // <description> Dump debugging information. </description>
00030 // <parameters>
00031 // <parameter name="void" required="yes" io="Input">
00032 //  <type>Void</type>
00033 //  <description> Void </description>
00034 // </parameter>
00035 // </parameters>
00036 // <return>Void</return>
00037 // </method>
00038 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00039 // <method id="CSIDebug.RegisterLabel">
00040 // <description> Register Label. </description>
00041 // <parameters>
00042 // <parameter name="in_sLabel" required="yes" io="Input">
00043 //  <type>char*</type>
00044 //  <description> Label </description>
00045 // </parameter>
00046 // <parameter name="in_sDescription" required="yes" io="Input">
00047 //  <type>char</type>
00048 //  <description> Description </description>
00049 // </parameter>
00050 // <parameter name="in_bSet" required="yes" io="Input">
00051 //  <type>bool</type>
00052 //  <description> Set </description>
00053 // </parameter>
00054 // </parameters>
00055 // <return>Returns number of used Labels. (int)</return>
00056 // </method>
00057 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00058 // <method id="CSIDebug.CheckLabel">
00059 // <description> Check the label. </description>
00060 // <parameters>
00061 // <parameter name="in_iLabel" required="yes" io="Input">
00062 //  <type>int</type>
00063 //  <description> Label </description>
00064 // </parameter>
00065 // </parameters>
00066 // <return>Returns bool. (SI_Bool)</return>
00067 // </method>
00068 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00069 // <method id="CSIDebug.LookupLabel" status="not-impl">
00070 // <description> Get label index </description>
00071 // <parameters>
00072 // <parameter name="in_sLabel" required="yes" io="Input">
00073 //  <type>char*</type>
00074 //  <description> Label </description>
00075 // </parameter>
00076 // </parameters>
00077 // <return>Returns label index. (int)</return>
00078 // </method>
00079 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00080 // <method id="CSIDebug.Printf">
00081 // <description> Print out debugginf information. </description>
00082 // <parameters>
00083 // <parameter name="in_iLabel" required="yes" io="Input">
00084 //  <type>int</type>
00085 //  <description> Label </description>
00086 // </parameter>
00087 // <parameter name="in_sFormat" required="yes" io="Input">
00088 //  <type>char*</type>
00089 //  <description> Character string. </description>
00090 // </parameter>
00091 // <parameter name="..." required="yes" io="Input">
00092 //  <type></type>
00093 //  <description> Argument list </description>
00094 // </parameter>
00095 // </parameters>
00096 // <return>Returns 0 if no info.</return>
00097 // </method>
00098 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00099 // <method id="CSIDebug.ParseArguments">
00100 // <description> Parses arguments. </description>
00101 // <parameters>
00102 // <parameter name="io_nArgs" required="yes" io="Input">
00103 //  <type>int*</type>
00104 //  <description> Number of I/O arguments. </description>
00105 // </parameter>
00106 // <parameter name="io_asArhs" required="yes" io="Input">
00107 //  <type>char**</type>
00108 //  <description> I/O arguments. </description>
00109 // </parameter>
00110 // </parameters>
00111 // <return>Void</return>
00112 // </method>
00113 //  <!-- method - - - - - - - - - - - - - - - - - - - - - - - - -->
00114 // <method id="CSIDebug.Set">
00115 // <description> Set the Label. </description>
00116 // <parameters>
00117 // <parameter name="in_sLabel" required="yes" io="Input">
00118 //  <type>int</type>
00119 //  <description> Label </description>
00120 // </parameter>
00121 // </parameters>
00122 // <return>Void</return>
00123 // </method>
00124 // </methods>
00125 // </object>
00126 
00127 
00128 
00129 #ifndef __CSIBCDebug_H__
00130 #define __CSIBCDebug_H__
00131 
00133 // Includes
00135 #ifndef _WIN32_WCE
00136 #include <assert.h>
00137 #else
00138 #endif
00139 
00140 #include "SIBCArray.h"
00141 #include "SIBCString.h"
00142 
00143 
00144 //**************************************************************************************
00145 // @class CSIDebug | Debug mechanism.
00146 //**************************************************************************************
00147 
00148 #if defined( DEBUG ) && defined( _PSX2 )
00149 
00150 class CSIDebug
00151 {
00152 public:
00153     CSIDebug();                                                                     // Constructor
00154     ~CSIDebug();                                                                    // Destructor
00155     void Dump();                                                                    // Prints out all labels
00156     int RegisterLabel( char * in_sLabel, char * in_sDescription, bool in_bSet );    // Label registration
00157     int LookupLabel( char * in_sLabel );                                            // Get label index
00158     bool CheckLabel( int in_iLabel );                                               // Check if label exist
00159     int Printf( int in_iLabel, char *, ... );                                       // Print method
00160     void ParseArguments( int * in_nArgs, char ** in_asArgs );                       // Parse arguments
00161     void Set( int in_sLabel );                                                      // Activate label
00162     
00163 private:
00164     CSIBCArray < CSIBCString >  m_LabelArray;
00165     CSIBCArray < CSIBCString >  m_DescriptionArray;
00166     CSIBCArray < bool > m_ValueArray;
00167 };
00168 
00169 extern int          g_iVerbose;
00170 extern CSIDebug *   g_pSIDebug;
00171 
00173 // Defines
00175 #define CSIDebugRegisterLabel( v, l, d ) v = g_pSIDebug->RegisterLabel( l, d, false )
00176 #define CSIDebugLookupLabel( l ) g_pSIDebug->CheckLabel( i )
00177 #define CSIDebugCheck( i ) g_pSIDebug->CheckLabel( i )
00178 #define CSIDebugDump( i ) g_pSIDebug->Dump()
00179 #define CSIDebugPrintf g_pSIDebug->Printf
00180 #define CSIDebugPrintf0( i, f ) g_pSIDebug->Printf( i, f )
00181 #define CSIDebugPrintf1( i, f, a ) g_pSIDebug->Printf( i, f, a )
00182 #define CSIDebugPrintf2( i, f, a, b ) g_pSIDebug->Printf( i, f, a, b )
00183 #define CSIDebugPrintf3( i, f, a, b, c ) g_pSIDebug->Printf( i, f, a, b, c )
00184 #define CSIDebugPrintf4( i, f, a, b, c, d ) g_pSIDebug->Printf( i, f, a, b, c, d )
00185 #define CSIDebugLabel( name ) static int name
00186 #define CSIDebugParseArguments( n, a ) g_pSIDebug->ParseArguments( n, a )
00187 #define CSIDebugDeclare() CSIDebug  * g_pSIDebug
00188 #define CSIDebugInit() g_pSIDebug = new CSIDebug()
00189 #define CSIDebugCleanUp() delete g_pSIDebug
00190 #define CSIDebugSet( i ) g_pSIDebug->Set( i );
00191 #else
00192 #define CSIDebugRegisterLabel( v, l, d ) 0
00193 #define CSIDebugLookupLabel( l ) 0
00194 #define CSIDebugCheck( i ) 0
00195 #define CSIDebugDump( i )
00196 #define CSIDebugSet( i )
00197 #define CSIDebugPrintf This shouldnt compile
00198 #define CSIDebugPrintf0( i, f )
00199 #define CSIDebugPrintf1( i, f, a )
00200 #define CSIDebugPrintf2( i, f, a, b )
00201 #define CSIDebugPrintf3( i, f, a, b, c )
00202 #define CSIDebugPrintf4( i, f, a, b, c, d )
00203 #define CSIDebugLabel( name )
00204 void CSIDebugParseArguments( int * in_nArgs, char ** in_asArgs );
00205 #define CSIDebugDeclare()
00206 #define CSIDebugInit()
00207 #define CSIDebugCleanUp()
00208 #endif
00209 
00211 // Inline code
00213 
00214 
00215 
00216 
00217 
00218 #endif // __CSIBCDebug_H__