Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => CodeCompletion redesign => Topic started by: blueshake on July 23, 2009, 01:38:00 PM

Title: class parse problem
Post by: blueshake on July 23, 2009, 01:38:00 PM
hello:
   In this thread http://forums.next.codeblocks.org/index.php/topic,10641.0.html (http://forums.next.codeblocks.org/index.php/topic,10641.0.html)
class ATL_NO_VTABLE CHyperLinkImpl : public ATL::CWindowImpl< T, TBase, TWinTraits >
{
public:
LPTSTR m_lpstrLabel;
LPTSTR m_lpstrHyperLink;

HCURSOR m_hCursor;
HFONT m_hFont;
HFONT m_hFontNormal;
};


codes above can be parsed correctly now.
here is the patch
Index: parserthread.cpp
===================================================================
--- parserthread.cpp (revision 5696)
+++ parserthread.cpp (working copy)
@@ -1345,6 +1357,8 @@
                    }
                }
            }
+            else
+                m_Tokenizer.GetToken();
        }
        else
            break;


[attachment deleted by admin]
Title: Re: class parse problem
Post by: blueshake on July 23, 2009, 02:48:41 PM
forget to mention .It's brach version .
Title: Re: class parse problem
Post by: ollydbg on July 23, 2009, 03:25:20 PM
I applied to my local trunk copy.
It seems  "CHyperLinkImpl " has no Ancestors.


m_Tokenizer.GetToken();

will eat the next Token. :D

By the way, the BraceCompletion related code was add in cbEditor, not CodeCompletion. in the current trunk :D
Title: Re: class parse problem
Post by: blueshake on July 23, 2009, 03:32:37 PM
QuoteIt seems  "CHyperLinkImpl " has no Ancestors.
I found that too .because CWindowImpl didnt exist in this case.

class MyClass
{
    int x;
    int y;
};

class ATL_NO_VTABLE CHyperLinkImpl : public MyClass
{
LPTSTR m_lpstrLabel;
LPTSTR m_lpstrHyperLink;

HCURSOR m_hCursor;
HFONT m_hFont;
HFONT m_hFontNormal;
};



in this case ,it will  have one . :D
Title: Re: class parse problem
Post by: ollydbg on July 23, 2009, 03:57:41 PM
aha, it really works if its ancestor is a template.

template<typename T1, typename T2>
class MyClass
{
     T1 x;
     T2 y;
};

class ATL_NO_VTABLE CHyperLinkImpl1 : public MyClass<float,int>
{
LPTSTR m_lpstrLabel;
LPTSTR m_lpstrHyperLink;

HCURSOR m_hCursor;
HFONT m_hFont;
HFONT m_hFontNormal;
};


This still works fine!!
Title: Re: class parse problem
Post by: blueshake on July 23, 2009, 04:01:52 PM
 :D
by the way,I have sent a e-mail to you ,Do you copy that.