Re: Function list in editor in case of C++ namespaces
Brought to you by:
set
From: Salvador E. T. <sal...@in...> - 2003-01-17 14:44:16
|
Andris wrote: >On Friday 17 January 2003 09:37, you wrote: > > >>There is one problem of showing function list (Search-->Jump to function in >>edittor) in presence of C++ namespaces (the same in case of nested >>classes): >> >>For example function body my look like >> >>int foo::bar::some_funct (int arg) >>{ >> .... >>} >> >> >> > >Sorry for bad patch (I forgot to look for '(' starting arguments). Below is a >better one (I hope ...) > > Thanks Andris. I applied it in a different way because I realized the following also fails: int function(scope::type arg_name) In this case the parser missunderstood the :: so what I did is: --- mainsrc/bufun.cc 12 Nov 2002 13:12:40 -0000 1.14 +++ mainsrc/bufun.cc 17 Jan 2003 14:32:14 -0000 1.15 @@ -560,9 +560,24 @@ { //stkHandler s=StrDup(bfTempNomFun,LineFun,Line,used,stk,rearrageName); //FunList->insert(s); - char *member; + char *member=NULL, *aux; + + // Look for the member name. But only in the function name. + aux=strchr(bfTempNomFun,'('); + if (aux) + { + *aux=0; + // Look for the *last* :: (namespace::class::member) + // Pointed out by Andris. + member=strrchr(bfTempNomFun,':'); + if (member && member!=bfTempNomFun && member[-1]==':') + member--; + else + member=NULL; + *aux='('; + } - if (!rearrageName || (member=strchr(bfTempNomFun,':'))==0) + if (!rearrageName || member==NULL) { strcpy(bfNomFun,bfTempNomFun); } It first separates the function name and then does a reverse search. It seems to work, but I just tested it using: juan(int name::hola) { pepe; } pepe::juan(int hola) { pepe; } name::pepe::juan(int hola) { pepe; } SET -- Salvador Eduardo Tropea (SET). (Electronics Engineer) Visit my home page: http://welcome.to/SetSoft or http://www.geocities.com/SiliconValley/Vista/6552/ Alternative e-mail: se...@co... se...@ie... Address: Curapaligue 2124, Caseros, 3 de Febrero Buenos Aires, (1678), ARGENTINA Phone: +(5411) 4759 0013 |