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-devel barney.cs.uni-potsdam.de
http://barney.cs.uni-potsdam.de/mailman/listinfo/
kdevelop-devel
|