]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/HelpGen/src/cjparser.cpp
add -mno-cygwin detection: we should treat cygwin as Windows, not Unix, when it's...
[wxWidgets.git] / utils / HelpGen / src / cjparser.cpp
index 9577db9fea74f67f5e8397c6739d5fee9fcb21d9..821023f397779796faef704499bf199b3762b323 100644 (file)
@@ -9,10 +9,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#  pragma implementation "acell.h"
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
@@ -386,13 +382,13 @@ static inline bool get_next_token( char*& cur )
         return true;
 }
 
         return true;
 }
 
-static inline void skip_preprocessor_dir( char*& cur )
+static inline void skip_preprocessor_dir( wxChar*& cur )
 {
     do
     {
         skip_to_eol(cur);
 
 {
     do
     {
         skip_to_eol(cur);
 
-        if ( *(cur-1) != '\\' )
+        if ( *(cur-1) != _T('\\') )
             break;
 
         if ( cur < _gSrcEnd )
             break;
 
         if ( cur < _gSrcEnd )
@@ -644,9 +640,9 @@ static inline void skip_next_token_back( char*& cur )
     ++cur; // position after the trailing charcter of the prev token
 }
 
     ++cur; // position after the trailing charcter of the prev token
 }
 
-static string get_token_str( char* cur )
+static wxString get_token_str( char* cur )
 {
 {
-    return string( cur, get_token_len( cur ) );
+    return wxString( cur, get_token_len( cur ) );
 }
 
 // skips token or whole expression which may have
 }
 
 // skips token or whole expression which may have
@@ -992,7 +988,7 @@ spFile* CJSourceParser::Parse( char* start, char* end )
     mIsTemplate   = 0;
     mNestingLevel = 0;
 
     mIsTemplate   = 0;
     mNestingLevel = 0;
 
-    cur = start;
+    m_cur = start;
 
     mpStart = start;
     mpEnd   = end;
 
     mpStart = start;
     mpEnd   = end;
@@ -1008,11 +1004,11 @@ spFile* CJSourceParser::Parse( char* start, char* end )
 
     do
     {
 
     do
     {
-        if ( !get_next_token( cur ) )
+        if ( !get_next_token( m_cur ) )
             // end of source reached
             return pTopCtx;
 
             // end of source reached
             return pTopCtx;
 
-        if ( memcmp( cur, "ScriptSection( const string&",
+        if ( memcmp( m_cur, "ScriptSection( const string&",
                      strlen( "ScriptSection( const string&" )
                    ) == 0
             )
                      strlen( "ScriptSection( const string&" )
                    ) == 0
             )
@@ -1021,35 +1017,35 @@ spFile* CJSourceParser::Parse( char* start, char* end )
             // ++o;
         }
 
             // ++o;
         }
 
-        switch (*cur)
+        switch (*m_cur)
         {
             case '#' :
                 {
         {
             case '#' :
                 {
-                    AddMacroNode( cur );
+                    AddMacroNode( m_cur );
                     continue;
                 }
 
             case ':' :
                 {
                     continue;
                 }
 
             case ':' :
                 {
-                    skip_token( cur );
+                    skip_token( m_cur );
                     continue;
                 }
 
             case ';' :
                 {
                     continue;
                 }
 
             case ';' :
                 {
-                    skip_token( cur );
+                    skip_token( m_cur );
                     continue;
                 }
 
             case ')' :
                 {
                     continue;
                 }
 
             case ')' :
                 {
-                    skip_token( cur );
+                    skip_token( m_cur );
                     continue;
                 }
 
             case '=' :
                 {
                     continue;
                 }
 
             case '=' :
                 {
-                    skip_token( cur );
+                    skip_token( m_cur );
                     continue;
                 }
 
                     continue;
                 }
 
@@ -1057,24 +1053,24 @@ spFile* CJSourceParser::Parse( char* start, char* end )
         }
 
         // 'const' is a part of the return type, not a keyword here
         }
 
         // 'const' is a part of the return type, not a keyword here
-        if ( strncmp(cur, "const", 5) != 0 && is_keyword( cur ) )
+        if ( strncmp(m_cur, "const", 5) != 0 && is_keyword( m_cur ) )
         {
             // parses, token, if token identifies
             // the container context (e.g. class/namespace)
             // the corresponding context object is created
             // and set as current context
 
         {
             // parses, token, if token identifies
             // the container context (e.g. class/namespace)
             // the corresponding context object is created
             // and set as current context
 
-            ParseKeyword( cur );
+            ParseKeyword( m_cur );
             continue;
         }
 
             continue;
         }
 
-        if ( *cur >= '0' && *cur <= '9' )
+        if ( *m_cur >= _T('0') && *m_cur <= _T('9') )
         {
         {
-            skip_token( cur );
+            skip_token( m_cur );
             continue;
         }
 
             continue;
         }
 
-        if ( *cur == '}' )
+        if ( *m_cur == _T('}') )
         {
             if ( mCurCtxType != SP_CTX_CLASS )
             {
         {
             if ( mCurCtxType != SP_CTX_CLASS )
             {
@@ -1083,13 +1079,13 @@ spFile* CJSourceParser::Parse( char* start, char* end )
                 // DBG:: unexpected closing-bracket found
                 //ASSERT(0);
 
                 // DBG:: unexpected closing-bracket found
                 //ASSERT(0);
 
-                skip_token( cur ); // just skip it
+                skip_token( m_cur ); // just skip it
                 continue;
             }
 
             if ( mpCurCtx->GetType() == SP_CTX_CLASS )
             {
                 continue;
             }
 
             if ( mpCurCtx->GetType() == SP_CTX_CLASS )
             {
-                int curOfs = ( (cur+1) - _gSrcStart );
+                int curOfs = ( (m_cur+1) - _gSrcStart );
 
                 mpCurCtx->mContextLength = ( curOfs - mpCurCtx->mSrcOffset );
             }
 
                 mpCurCtx->mContextLength = ( curOfs - mpCurCtx->mSrcOffset );
             }
@@ -1113,21 +1109,21 @@ spFile* CJSourceParser::Parse( char* start, char* end )
                 mIsTemplate = 0;
             }
 
                 mIsTemplate = 0;
             }
 
-            skip_token( cur );
+            skip_token( m_cur );
             continue;
         }
 
         bool isAMacro = false;
 
             continue;
         }
 
         bool isAMacro = false;
 
-        if ( is_function( cur, isAMacro ) )
+        if ( is_function( m_cur, isAMacro ) )
         {
             if ( isAMacro )
             {
         {
             if ( isAMacro )
             {
-                skip_token( cur );
+                skip_token( m_cur );
                 continue;
             }
 
                 continue;
             }
 
-            char* savedPos = cur;
+            char* savedPos = m_cur;
 
             int tmpLnNo;
             store_line_no( tmpLnNo );
 
             int tmpLnNo;
             store_line_no( tmpLnNo );
@@ -1135,17 +1131,17 @@ spFile* CJSourceParser::Parse( char* start, char* end )
 
             isAMacro = false;
 
 
             isAMacro = false;
 
-            if ( !ParseNameAndRetVal( cur, isAMacro ) )
+            if ( !ParseNameAndRetVal( m_cur, isAMacro ) )
             {
                 if ( !isAMacro )
                 {
             {
                 if ( !isAMacro )
                 {
-                    cur = savedPos;
-                    SkipFunction( cur );
+                    m_cur = savedPos;
+                    SkipFunction( m_cur );
                 }
                 continue;
             }
 
                 }
                 continue;
             }
 
-            if ( !ParseArguments( cur ) )
+            if ( !ParseArguments( m_cur ) )
             {
                 // failure while parsing arguments,
                 // remove enclosing operation context
             {
                 // failure while parsing arguments,
                 // remove enclosing operation context
@@ -1154,8 +1150,8 @@ spFile* CJSourceParser::Parse( char* start, char* end )
                 mpCurCtx = mpCurCtx->GetOutterContext();
                 mpCurCtx->RemoveChild( pFailed );
 
                 mpCurCtx = mpCurCtx->GetOutterContext();
                 mpCurCtx->RemoveChild( pFailed );
 
-                skip_to_eol( cur );
-                //cur = savedPos;
+                skip_to_eol( m_cur );
+                //m_cur = savedPos;
             }
             else
             {
             }
             else
             {
@@ -1163,7 +1159,7 @@ spFile* CJSourceParser::Parse( char* start, char* end )
 
                 clear_commets_queue();
 
 
                 clear_commets_queue();
 
-                SkipFunctionBody( cur );
+                SkipFunctionBody( m_cur );
 
                 mpCurCtx = mpCurCtx->GetOutterContext();
 
 
                 mpCurCtx = mpCurCtx->GetOutterContext();
 
@@ -1180,11 +1176,11 @@ spFile* CJSourceParser::Parse( char* start, char* end )
             {
                 // non-class members are ignored
 
             {
                 // non-class members are ignored
 
-                skip_token( cur ); // skip the end of statement
+                skip_token( m_cur ); // skip the end of statement
                 continue;
             }
 
                 continue;
             }
 
-            ParseMemberVar( cur );
+            ParseMemberVar( m_cur );
         }
 
     } while( 1 );
         }
 
     } while( 1 );
@@ -1196,7 +1192,7 @@ void CJSourceParser::AttachComments( spContext& ctx, wxChar* cur )
 
     MCommentListT& lst = ctx.GetCommentList();
 
 
     MCommentListT& lst = ctx.GetCommentList();
 
-    char* prevComEnd = 0;
+    wxChar* prevComEnd = 0;
 
     int tmpLnNo;
     store_line_no( tmpLnNo );
 
     int tmpLnNo;
     store_line_no( tmpLnNo );
@@ -1209,32 +1205,31 @@ void CJSourceParser::AttachComments( spContext& ctx, wxChar* cur )
         lst.push_back( pComment );
 
         // find the end of comment
         lst.push_back( pComment );
 
         // find the end of comment
-        char* start = _gCommentsQueue[i];
+        wxChar* start = _gCommentsQueue[i];
 
 
-        pComment->mIsMultiline = ( *(start+1) == '*' );
+        pComment->mIsMultiline = ( *(start+1) == _T('*') );
 
         // first comment in the queue and multiline
         // comments are always treated as a begining
         // of the new paragraph in the comment text
 
         if ( i == 0 )
 
         // first comment in the queue and multiline
         // comments are always treated as a begining
         // of the new paragraph in the comment text
 
         if ( i == 0 )
-
+        {
             pComment->mStartsPar = true;
             pComment->mStartsPar = true;
-        else
-        if ( pComment->mIsMultiline )
-
+        }
+        else if ( pComment->mIsMultiline )
+        {
             pComment->mStartsPar = true;
             pComment->mStartsPar = true;
+        }
         else
         {
             // find out wheather there is a new-line
             // between to adjecent comments
 
         else
         {
             // find out wheather there is a new-line
             // between to adjecent comments
 
-
-            char* prevLine = start;
+            wxChar* prevLine = start;
             skip_to_prev_line(prevLine);
 
             if ( prevLine >= prevComEnd )
             skip_to_prev_line(prevLine);
 
             if ( prevLine >= prevComEnd )
-
                 pComment->mStartsPar = true;
             else
                 pComment->mStartsPar = false;
                 pComment->mStartsPar = true;
             else
                 pComment->mStartsPar = false;
@@ -1243,7 +1238,6 @@ void CJSourceParser::AttachComments( spContext& ctx, wxChar* cur )
         prevComEnd = set_comment_text( pComment->m_Text, start );
     }
 
         prevComEnd = set_comment_text( pComment->m_Text, start );
     }
 
-
     // attach comments which are at the end of the line
     // of the given context (if any)
 
     // attach comments which are at the end of the line
     // of the given context (if any)
 
@@ -1255,7 +1249,7 @@ void CJSourceParser::AttachComments( spContext& ctx, wxChar* cur )
         set_comment_text( pComment->m_Text, cur );
 
         pComment->mStartsPar = 1;
         set_comment_text( pComment->m_Text, cur );
 
         pComment->mStartsPar = 1;
-        pComment->mIsMultiline = ( *(cur+1) == '*' );
+        pComment->mIsMultiline = ( *(cur+1) == _T('*') );
 
         // mark this comment, so that it would not
         // get in the comments list of the next context
 
         // mark this comment, so that it would not
         // get in the comments list of the next context
@@ -1329,7 +1323,7 @@ void CJSourceParser::AddMacroNode( wxChar*& cur )
             skip_token( cur );
             get_next_token( cur );
 
             skip_token( cur );
             get_next_token( cur );
 
-            string condition = get_token_str( cur );
+            wxString condition = get_token_str( cur );
 
             // currently, everything except '0' is true
             if ( condition == _T("0") ) {
 
             // currently, everything except '0' is true
             if ( condition == _T("0") ) {
@@ -1597,7 +1591,7 @@ bool CJSourceParser::ParseNameAndRetVal( char*& cur, bool& isAMacro )
         skip_next_token_back( cur );
         skip_token_back( cur );
 
         skip_next_token_back( cur );
         skip_token_back( cur );
 
-        string lastToken = get_token_str( cur );
+        wxString lastToken = get_token_str( cur );
         if ( lastToken == "operator" ) {
             lastToken += pOp->m_Name;
             pOp->m_Name = lastToken;
         if ( lastToken == "operator" ) {
             lastToken += pOp->m_Name;
             pOp->m_Name = lastToken;
@@ -1610,7 +1604,7 @@ bool CJSourceParser::ParseNameAndRetVal( char*& cur, bool& isAMacro )
     else if ( pOp->m_Name == "operator" ) {
         skip_token( cur );
         get_next_token( cur );
     else if ( pOp->m_Name == "operator" ) {
         skip_token( cur );
         get_next_token( cur );
-        string oper = get_token_str( cur );
+        wxString oper = get_token_str( cur );
 
         pOp->m_Name += oper;
     }
 
         pOp->m_Name += oper;
     }
@@ -1620,11 +1614,11 @@ bool CJSourceParser::ParseNameAndRetVal( char*& cur, bool& isAMacro )
 
     if ( cur >= start )
     {
 
     if ( cur >= start )
     {
-        string rettype = string( start, size_t( cur-start ) );
+        wxString rettype = wxString( start, size_t( cur-start ) );
         // FIXME just for now...
         // FIXME just for now...
-        string::size_type pos = 0;
-        string toerase("WXDLLEXPORT ");
-        while((pos = rettype.find(toerase, pos)) != string::npos)
+        wxString::size_type pos = 0;
+        wxString toerase("WXDLLEXPORT ");
+        while((pos = rettype.find(toerase, pos)) != wxString::npos)
             rettype.erase(pos, toerase.length());
         pOp->m_RetType = rettype;
     }
             rettype.erase(pos, toerase.length());
         pOp->m_RetType = rettype;
     }
@@ -1736,7 +1730,7 @@ bool CJSourceParser::ParseArguments( char*& cur )
                 continue;
             }
 
                 continue;
             }
 
-            pPar->mInitVal = string( blocks[nameBlock], blockSizes[nameBlock] );
+            pPar->m_InitVal = wxString( blocks[nameBlock], blockSizes[nameBlock] );
 
             nameBlock = nameBlock - 2; // skip '=' token and default value block
             typeBlock = nameBlock - 1;
 
             nameBlock = nameBlock - 2; // skip '=' token and default value block
             typeBlock = nameBlock - 1;
@@ -1746,14 +1740,14 @@ bool CJSourceParser::ParseArguments( char*& cur )
         AttachComments( *pPar, blocks[nameBlock] );
 
         // retrieve argument name
         AttachComments( *pPar, blocks[nameBlock] );
 
         // retrieve argument name
-        pPar->m_Name = string( blocks[nameBlock], blockSizes[nameBlock] );
+        pPar->m_Name = wxString( blocks[nameBlock], blockSizes[nameBlock] );
 
         // retreive argument type
 
         size_t len = blockSizes[ typeBlock ];
         len = size_t ( (blocks[ typeBlock ] + len) - blocks[ 0 ] );
 
 
         // retreive argument type
 
         size_t len = blockSizes[ typeBlock ];
         len = size_t ( (blocks[ typeBlock ] + len) - blocks[ 0 ] );
 
-        pPar->m_Type = string( blocks[0], len );
+        pPar->m_Type = wxString( blocks[0], len );
 
         arrange_indirection_tokens_between( pPar->m_Type, pPar->m_Name );
 
 
         arrange_indirection_tokens_between( pPar->m_Type, pPar->m_Name );
 
@@ -1836,7 +1830,7 @@ void CJSourceParser::ParseMemberVar( char*& cur )
 
     bool firstMember = true;
 
 
     bool firstMember = true;
 
-    string type;
+    wxString type;
 
     // jump to the end of statement
     // and start collecting same-type varibles
 
     // jump to the end of statement
     // and start collecting same-type varibles
@@ -1882,12 +1876,11 @@ void CJSourceParser::ParseMemberVar( char*& cur )
         // if comma, than variable list continues
         // otherwise the variable type reached - stop
 
         // if comma, than variable list continues
         // otherwise the variable type reached - stop
 
-        if ( *cur == '=' )
+        if ( *cur == _T('=') )
         {
             // yes, we've mistaken, it was not a identifier,
             // but it's default value
         {
             // yes, we've mistaken, it was not a identifier,
             // but it's default value
-            pAttr->mInitVal =
-                pAttr->m_Name;
+            pAttr->m_InitVal = pAttr->m_Name;
 
             // skip default value and '=' symbol
             skip_next_token_back( cur );
 
             // skip default value and '=' symbol
             skip_next_token_back( cur );
@@ -2029,7 +2022,7 @@ void CJSourceParser::AddClassNode( char*& cur )
 {
     char* ctxStart = cur;
 
 {
     char* ctxStart = cur;
 
-    string classkeyword = get_token_str( cur );
+    wxString classkeyword = get_token_str( cur );
 
     skip_token( cur ); // skip 'class' keyword
     if ( !get_next_token( cur ) ) return;
 
     skip_token( cur ); // skip 'class' keyword
     if ( !get_next_token( cur ) ) return;
@@ -2159,7 +2152,7 @@ void CJSourceParser::AddClassNode( char*& cur )
 
         if ( *tok != ':' && *cur != ':' )
 
 
         if ( *tok != ':' && *cur != ':' )
 
-            pClass->mSuperClassNames.push_back( string( cur, len ) );
+            pClass->m_SuperClassNames.push_back( wxString( cur, len ) );
 
     } while(1);
 
 
     } while(1);
 
@@ -2168,9 +2161,9 @@ void CJSourceParser::AddClassNode( char*& cur )
         int tmpLn;
         store_line_no( tmpLn );
 
         int tmpLn;
         store_line_no( tmpLn );
 
-        while ( pClass->mSuperClassNames.size() )
+        while ( pClass->m_SuperClassNames.size() )
 
 
-            pClass->mSuperClassNames.erase( &pClass->mSuperClassNames[0] );
+            pClass->m_SuperClassNames.erase( &pClass->m_SuperClassNames[0] );
 
         char* tok = cur;
 
 
         char* tok = cur;
 
@@ -2196,10 +2189,10 @@ void CJSourceParser::AddClassNode( char*& cur )
     clear_commets_queue();
 }
 
     clear_commets_queue();
 }
 
-void CJSourceParser::AddEnumNode( char*& cur )
+void CJSourceParser::AddEnumNode( wxChar*& cur )
 {
     // now the cursor is at "enum" keyword
 {
     // now the cursor is at "enum" keyword
-    char* start = cur;
+    wxChar* start = cur;
 
     spEnumeration* pEnum = new spEnumeration();
     mpCurCtx->AddMember( pEnum );
 
     spEnumeration* pEnum = new spEnumeration();
     mpCurCtx->AddMember( pEnum );
@@ -2233,13 +2226,13 @@ void CJSourceParser::AddEnumNode( char*& cur )
     clear_commets_queue();
 }
 
     clear_commets_queue();
 }
 
-void CJSourceParser::AddTypeDefNode( char*& cur )
+void CJSourceParser::AddTypeDefNode( wxChar*& cur )
 {
     // now the cursor at the token next to "typedef" keyword
 
     if ( !get_next_token(cur) ) return;
 
 {
     // now the cursor at the token next to "typedef" keyword
 
     if ( !get_next_token(cur) ) return;
 
-    char* start = cur;
+    wxChar* start = cur;
 
     spTypeDef* pTDef = new spTypeDef();
     mpCurCtx->AddMember( pTDef );
 
     spTypeDef* pTDef = new spTypeDef();
     mpCurCtx->AddMember( pTDef );
@@ -2253,18 +2246,18 @@ void CJSourceParser::AddTypeDefNode( char*& cur )
     int tmpLnNo;
     store_line_no( tmpLnNo );
 
     int tmpLnNo;
     store_line_no( tmpLnNo );
 
-    char* tok = cur-1;
+    wxChar* tok = cur-1;
     skip_next_token_back( tok );
 
     skip_next_token_back( tok );
 
-    char* nameEnd = tok;
+    wxChar* nameEnd = tok;
 
     skip_token_back( tok );
 
 
     skip_token_back( tok );
 
-    char* nameStart = tok;
+    wxChar* nameStart = tok;
 
     skip_next_token_back( tok );
 
 
     skip_next_token_back( tok );
 
-    char* typeEnd = tok;
+    wxChar* typeEnd = tok;
 
     // check if it's function prototype
     if ( *nameStart == ')' )
 
     // check if it's function prototype
     if ( *nameStart == ')' )