Class View don't show all members

I just installed Microsoft Visual C++ 2005 (I was using Visual C++ 2003 before) and Class View doesn't work well. It just show me the begining of the class members but not all the members (data, methods, etc...) :

On that sample code (just part of it), it just show me :

BEGIN_TEST_MAP(CVTxDeRatio)
UpdateRegistry(BOOL bRegister)
_CreatorClass

And here's the H file sample code (they are more methods in the original one) :

class ATL_NO_VTABLE CVTxDeRatio :

public _CVTxDeRatioBaseImpl,

public ILecSWTestProcessorImpl

{

public:

DECLARE_REGISTRY_RESOURCEID(IDR_VTXDERATIO)

DECLARE_NOT_AGGREGATABLE(CVTxDeRatio)

BEGIN_COM_MAP(CVTxDeRatio)

COM_INTERFACE_ENTRY(CVTxDeRatio)

COM_INTERFACE_ENTRY(ILecSWTest)

COM_INTERFACE_ENTRY_CHAIN(_CVTxDeRatioBaseImpl)

END_COM_MAP()

BEGIN_TEST_MAP(CVTxDeRatio)

TEST_MAP_ENTRY(WHICHTEST_Standard, StandardTest, L"Standard Test", L"Preliminary STest")

END_TEST_MAP_WITH_LEAK_TEST

DECLARE_PROTECT_FINAL_CONSTRUCT()

public:

CVTxDeRatio():

m_inputPin(GetUnknown()),

m_outputPin(GetUnknown())

{

m_stethoStartId = m_stethoscope.AssociateNameWithId(L"VTxDeRatio::Start");

m_stethoVoltageId = m_stethoscope.AssociateNameWithId(L"VTxDeRatio::Voltage");

m_stethoAverageId = m_stethoscope.AssociateNameWithId(L"VTxDeRatio::Average");

}

HRESULT FinalConstruct();

//------------------------------------------------------------------------------------------

// ILecResultProcessorBatchingImpl (overridden methods)

HRESULT UpdateFromInputResults(std::vector<SLecResultInfo> & rvecInputResultInfo, bool bInputOrMyDefinitionChanged);


So all the methods like UpdateFromInputResults(), FinalConstruct(), etc... are missing in calss view.

Note that if I comment these 3 lines, then class view is working fine (but my build fail) :

//BEGIN_TEST_MAP(CVTxDeRatio)

// TEST_MAP_ENTRY(WHICHTEST_Standard, StandardTest, L"Standard Test", L"Preliminary STest")

//END_TEST_MAP_WITH_LEAK_TEST

So there's probably a problem with Class View and macros... but why it break the full class view sparsing




Answer this question

Class View don't show all members

  • DatabaseOgre

    Looks like you are using custom MAPs here.

    I could not reproduce the problem with just the sample code you provided.
    Can you also provide the definitions that you are using for "BEGIN_TEST_MAP", "TEST_MAP_ENTRY" and "END_TEST_MAP_WITH_LEAK_TEST".

    Based on the information you provided, the problem is probably caused because of the MAP processing code in the intellisense parser. Since MAPs are not true C++ Language constructs, we have to use heuristics to guess what is a map and what is not. In general an identfier that begins with "BEGIN_" and ends in "_MAP" is assumed as the start of a map and an identifier that begins with "END_" and ends in "_MAP" would indicate the end of a map.

    Something worthwhile to try would be to do the following:
    Rename your "END_TEST_MAP_WITH_LEAK_TEST" macro to "END_LEAK_TEST_MAP" (and make it a macro that takes no args by adding "()") and change the corresponding BEGIN_TEST_MAP macro too.

    Basically the code would look something like:

    BEGIN_LEAK_TEST_MAP(CVTxDeRatio)

    TEST_MAP_ENTRY(WHICHTEST_Standard, StandardTest, L"Standard Test", L"Preliminary STest")

    END_LEAK_TEST_MAP()

    Of course you also have to go and change the definitions of these macros to reflect the name and parameter change

    Is it possible for you to provide this extra information so that we can investigate this issue further
    My E-Mail address is below if you want to send it to me directly rather than posting the code here.

    Thanks for taking the time to report the problem to Microsoft.

    - Ameya Limaye

    AmeyaL(thisIsTheAtSign)(MSFTFullForm)(dot)com



  • DWS

    Thanks for your answer... it's clearly related to the macro name of our custom map. I rename my "end map" macro to :

    END_TEST_WITH_LEAK_MAP

    and it works.

    I add a '2' or something else an the end, and it doesn't work.

    Thierry



  • Class View don't show all members