emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH, RFC] etags/ctags v22.0.92 break Linux kernel `make TAGS/tags


From: Frank Schmitt
Subject: Re: [PATCH, RFC] etags/ctags v22.0.92 break Linux kernel `make TAGS/tags`
Date: Wed, 03 Jan 2007 15:33:10 +0100
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.92 (gnu/linux)

Frank Schmitt <address@hidden> writes:

> Sorry, I don't have an example at hand, because my switch was somewhere
> in summer. But I used emacs CVS head etags till then and had problems,
> that a special case of templated functions in C++ were not listed in
> TAGS. I'll switch back to Emacs etags and report when I find something
> which Emacs etags doesn't tag.

I did some testing and found out that I just didn't RTFM. Emacs etags
defaults to not TAG member variables of C++ classes (which doesn't make
much sense in my eyes) while exuberant ctags does tag those. However
after aliasing etags to etags --members it works just as well for me as
exuberant ctags does.

One question though: Say I have a class like this:

template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl, typename ipc3dLinkControlSetup>
class CMultiChannelCSC19_3D
{
public:
        ipc3dLinkControlSetup setup;
        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC; 
        advTimer cscInitTime;
        advTimer cscSegmentationTime;
        advTimer outputTime;
        void execute(CPluginCSCState& p, int w, int h, int d, const 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage, 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int* 
mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)
        {
                if (orgImage!=NULL)
                {
                                  //do something
                }
        }
};

what Emacs etags generates is

foo.h,936
template <typename ipc3dIslandHierarchy,1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels,1,0
template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned 
numOfChannels, typename ipc3dLinkControl,1,0
class CMultiChannelCSC19_3D2,151
        ipc3dLinkControlSetup setup;CMultiChannelCSC19_3D::setup5,189
        ipc3dCSC19<CMultiChannelCSC19_3D::ipc3dCSC196,219
        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC;CMultiChannelCSC19_3D::mcCSC6,219
        advTimer cscInitTime;CMultiChannelCSC19_3D::cscInitTime7,374
        advTimer 
cscSegmentationTime;CMultiChannelCSC19_3D::cscSegmentationTime8,397
        advTimer outputTime;CMultiChannelCSC19_3D::outputTime9,428
        void execute(CMultiChannelCSC19_3D::execute10,450

while exuberant ctags skips those first four lines:

foo.h,680
class CMultiChannelCSC19_3DCMultiChannelCSC19_3D2,151
        ipc3dLinkControlSetup setup;setup5,189
        
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
 mcCSC; mcCSC6,219
        advTimer cscInitTime;cscInitTime7,374
        advTimer cscSegmentationTime;cscSegmentationTime8,397
        advTimer outputTime;outputTime9,428
        void execute(CPluginCSCState& p, int w, int h, int d, const 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage, 
ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int* 
mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)execute10,450

what do they mean?

-- 
Did you ever realize how much text fits in eighty columns? If you now consider
that a signature usually consists of up to four lines, this gives you enough
space to spread a tremendous amount of information with your messages. So seize
this opportunity and don't waste your signature with bullshit nobody will read.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]