News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

Main Menu

class parse problem

Started by blueshake, July 23, 2009, 01:38:00 PM

Previous topic - Next topic

blueshake

hello:
   In this thread 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]
Keep low and hear the sadness of little dog.
I fall in love with a girl,but I don't dare to tell her.What should I do?

blueshake

forget to mention .It's brach version .
Keep low and hear the sadness of little dog.
I fall in love with a girl,but I don't dare to tell her.What should I do?

ollydbg

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
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

blueshake

#3
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
Keep low and hear the sadness of little dog.
I fall in love with a girl,but I don't dare to tell her.What should I do?

ollydbg

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!!
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

blueshake

 :D
by the way,I have sent a e-mail to you ,Do you copy that.
Keep low and hear the sadness of little dog.
I fall in love with a girl,but I don't dare to tell her.What should I do?