List Info

Thread: CppParser, CodeCompletion and ClassView Problem




CppParser, CodeCompletion and ClassView Problem
user name
2006-05-31 08:53:49
On Wed May 31 09:58:59 amantia at kde.org wrote:
> 1) Why don't you use gcc instead of g++?
Actually the *.c files get compiled by gcc.
*.cc Files get compiled by g++ because even if there are
just function (and no 
class definitions) they might be using the STL or some of
our own C++ 
libraries.

> 2) Why don't you use g++ -x c (man g++ to see what I
mean)?
We use the extern "C" to disable the C++
name-mangling for function which 
resides in a file for the C++ compiler but in fact are
ANSI-C functions. 
Besides that g++ has a much stricter type check and so on.

But nevertheless, why is there a difference between the
ClassView and the 
"Functions in file" combobox. Don't they both
get their data from the 
CppParser?


> 3) I hope you are talking about the
branches/kdevelop/3.4 and not 
> branches/KDE/3.5/kdevelop.
You're right. Sorry, just a typo :-(




Is there any prossibility to find out if the parser has a
problem with the a 
file or is it possible to test which data the parser is able
to extract from 
a file?


Best Regards, Robert





On Wed May 31 09:51:05 CEST 2006 Robert Gruber wrote:
>Hi,
>
>i've got some questions about the classview and the new
codecompletion in 
>"kdevelop/3.5" branch.
>
>At work I use KDevelop to develop our software. It is
written mainly in 
>ANSI-C  
>but gets compiled by g++ and therefor each
implementation file (*.cc and *.c) 
>and header file has a >> extern "C" {
.... } << around the declaration and 
>the definition of the functions.
>
>
>1) [ Actually I don't really know if this is a problem
of the parser or the 
>classview ]
>Unfortunatly the functions that are defined inside the
extern "C" block do 
>not  
>show up in the classview at all but gets shown in the
"Functions in file" 
>combobox.
>
>What is really strange is this. If I remove the extern
"C" part from both the 
>header and the implementation file, the functions show
up in the classview 
>and when I select one KDevelop jumps to the declaration
of the function. But 
>I still cannot jump to the implementation of the
function. I only saw this 
>behavior if the implementation of the function is inside
a *.cc file. It 
>seams to me that if the functions are in a *.c file the
classview can jump to 
>both the declaration as well as to the implementation.
>
>So my questions are: Is there a problem with extern
"C" in the parser? And 
>does the parser or the classview ignore *.cc files?
>
>
>2)
>I also have some strange behavior with the
codecompletion. 
>First of all our project contains several hundreds of
files. In some files I 
>get codecompletion in most of then not. 
>
>If codecompletion works in a file I only get the localy
defined variables and 
>the parameters of the function. Not a single function
shows up in the 
>selection list. (This might be related to the extern
"C" problem 
>somehow!?!?). But for most of the files codecompletion
does not works at all. 
>Hitting <Ctrl>+<Space> has no effect. What
really confuses me is, that I 
>can't find big differences between files with working
and files with none 
>working codecompletion.
>
>
>
>Here are some messages that get written to stdout while
loading the project:
>kdevelop (cpp support): projectOpened( )
>kdevelop (cpp support): CppSupportPart::setupCatalog()
>kdevelop (cpp support): ProblemReporter::configure()
>kdevelop (cpp support): [void 
>CppCodeCompletion::slotActivePartChanged(KParts::Part*)]
>kdevelop (cpp support): [void 
>CppCodeCompletion::slotActivePartChanged(KParts::Part*)]
-- end
>kdevelop (cpp support): [void 
>CppCodeCompletion::integratePart(KParts::Part*)]  
>integrate document: 0x9574e10
>kdevelop (cpp support): CppSupportPart::parseProject 1
>kdevelop (cpp support): CppSupportPart::parseProject 2
>kdevelop (cpp support): CppSupportPart::parseProject 3
>kdevelop (cpp support): CppSupportPart::parseProject 4
>kdevelop (cpp support): CppSupportPart::parseProject 5
>ASSERT: "part && parent" in
/tmp/kdevelop_34/parts/fileview/partwidget.cpp 
>(41)
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>ERROR: syntax error
>kdevelop (cpp support):
CppSupportPart::customEvent(2000)
>kdevelop (cpp support): ParseEmitWaiting: file 
>"/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-w
amasp/wppool/wppool_s/dcckommprn_util.cc" 
>has no group waiting for it
>kdevelop (cpp support): remove with 
>references:
/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-wamasp/wpgir
ad/wpgirad_s/wpgirad_ctxutil.h
>kdevelop (cpp support): remove with 
>references:
/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-wamasp/wpgir
ad/wpgirad_s/wpgirad_lists.h
>kdevelop (cpp support): remove with 
>references:
/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-wamasp/wpgir
ad/wpgirad_s/wpgirad_ctxutil.cc
>kdevelop (cpp support): updating sourceinfo
>
>
>
>
>When hitting <Ctrl>+<Space> in a file where
codecompletion works this shows 
>up:
>kdevelop (cpp 
>support):
/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-wamasp/wppoo
l/wppool_s/dcckommprn_util.cc---> 
>file added to background-parser(by problem-reporter)
>kdevelop (cpp support):
CppSupportPart::customEvent(2000)
>kdevelop (cpp support): not updating code-model because
at least one file has 
>errors
>kdevelop (cpp support):
CppCodeCompletion::computeRecoveryPoints
>kdevelop (cpp support): found 3 recovery points
>kdevelop (cpp support):
CppCodeCompletion::completeText()
>kdevelop (cpp support): using code-model for completion
>kdevelop (cpp support): startLine = int
GetNextTeIdToIdentifyByKsNrPos (
>kdevelop (cpp support): -------------> reparse text
>kdevelop (cpp support): int
GetNextTeIdToIdentifyByKsNrPos (
>                const void *kpvTid,
>                const char *kpcFac,
>                const long klKsNr,
>                const POS *kptTpmPos,
>                TEK *ptTek)
>{
>        const char                      *kpcFctName = 
>"GetNextTeIdToIdentifyByKsNrPos";
>        int                                     iDbRv =
0;
>        string                          strStmt =
"";
>
>pt
>kdevelop (cpp support):
--------------------------------------------
>kdevelop (cpp support): is function definition= true
>kdevelop (cpp support): endLine = 11, endColumn 2
>kdevelop (cpp support): [int
CppCodeCompletion::expressionAt(const QString&, 
>int)]
>kdevelop (cpp support):
CppCodeCompletion::computeContext() -- main
>kdevelop (cpp support): scope is empty
>kdevelop (cpp support): inserting import (std) into the
global scole
>kdevelop (cpp support): (34)Initializing evaluation of
expression false
>kdevelop (cpp support): ===========================>
type is:
>kdevelop (cpp support): ===========================>
word is: pt
>kdevelop (cpp support): 8types in type-store before
destruction
>kdevelop (cpp support): type-store is not empty, 8 types
are left over
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp 
>support):
/mybig/product/WAMAS/llr/src.rgruber.HEAD/wamas-wamasp/wppoo
l/wppool_s/dcckommprn_util.cc---> 
>file added to background-parser(by problem-reporter)
>kdevelop (cpp support):
CppSupportPart::customEvent(2000)
>kdevelop (cpp support): not updating code-model because
at least one file has 
>errors
>kdevelop (cpp support):
CppCodeCompletion::computeRecoveryPoints
>kdevelop (cpp support): found 3 recovery points
>
>
>
>
>
>
>
>
>When hitting <Ctrl>+<Space> in a file where
codecompletion does NOT work this 
>shows up:
>kdevelop (cpp support):
CppCodeCompletion::completeText()
>kdevelop (cpp support): using code-model for completion
>kdevelop (cpp support): startLine = int
WpGiRad_HandleCbStack(void* pvTid, 
>const char* pkcFac,
>kdevelop (cpp support): -------------> reparse text
>kdevelop (cpp support): int WpGiRad_HandleCbStack(void*
pvTid, const char* 
>pkcFac,
>                        OpmsgTCbStackPtr ptStack, int
iError, 
>CbStackQuestion&  
>question)
>{
>        int iRv;
>kdevelop (cpp support):
>kdevelop (cpp support):
--------------------------------------------
>kdevelop (cpp support): is function definition= true
>kdevelop (cpp support): endLine = 3, endColumn 9
>kdevelop (cpp support): [int
CppCodeCompletion::expressionAt(const QString&, 
>int)]
>kdevelop (cpp support):
CppCodeCompletion::computeContext() -- main
>kdevelop (cpp support): inserting import (wamas,wamasp)
into the global scole
>kdevelop (cpp support): (70)Initializing evaluation of
expression false
>kdevelop (cpp support): ===========================>
type is:
>kdevelop (cpp support): ===========================>
word is:
>kdevelop (cpp support): 30types in type-store before
destruction
>kdevelop (cpp support): type-store is not empty, 10
types are left over
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left: wamasp
(wamas::wamasp)
>kdevelop (cpp support): type left: wamasp ()
>kdevelop (cpp support): type left: wamasp
(wamas::wamasp)
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left: wamasp*
(wamas::wamasp)
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left:  ()
>kdevelop (cpp support): type left: wamasp ()
>
>
>
>
>
>Hopefully this helps you in any way. If you need any
further information or 
>there is anything else I could do just let me know.
>
>Just to make sure, I'm using KDevelop compiled from
sources from the 
>"kdevelop/3.5" branch. Last updated on 30th
of May with my developer svn 
>account.
>
>
>Best Regards, Robert

_______________________________________________
KDevelop-devel mailing list
KDevelop-develbarney.cs.uni-potsdam.de
http://barney.cs.uni-potsdam.de/mailman/listinfo/
kdevelop-devel
CppParser, CodeCompletion and ClassView Problem
user name
2006-05-31 09:37:16
On Wednesday 31 May 2006 11:53, Robert Gruber wrote:
> On Wed May 31 09:58:59 amantia at kde.org wrote:
> > 1) Why don't you use gcc instead of g++?
>
> Actually the *.c files get compiled by gcc.
> *.cc Files get compiled by g++ because even if there
are just
> function (and no class definitions) they might be using
the STL or
> some of our own C++ libraries.
>
> > 2) Why don't you use g++ -x c (man g++ to see
what I mean)?
>
> We use the extern "C" to disable the C++
name-mangling for function
> which resides in a file for the C++ compiler but in
fact are ANSI-C
> functions. Besides that g++ has a much stricter type
check and so on.

So you mix C and C++ files? 

> But nevertheless, why is there a difference between the
ClassView and
> the "Functions in file" combobox. Don't
they both get their data from
> the CppParser?

Of course, this is a question.  I just
wanted to know if you can 
workaround the behavior.

Andras


-- 
Quanta Plus developer - http://quanta.kdewebdev.o
rg
K Desktop Environment - http://www.kde.org
_______________________________________________
KDevelop-devel mailing list
KDevelop-develbarney.cs.uni-potsdam.de
http://barney.cs.uni-potsdam.de/mailman/listinfo/
kdevelop-devel
[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )