News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

some advice to CodeCompletion Plugin

Started by zyjjingle, September 23, 2009, 05:08:56 PM

Previous topic - Next topic

zyjjingle

in gcc compiler tool chain include files, always use this way
   //#define _EXFUN(name, proto) name proto
   //#define _EXPARAM(name, proto) (name) proto
   //#define _DEFUN(name,arglist,args) name(args)
   //#define _DEFUN_VOID(name) name(void)

for example:
char    *_EXFUN(strcat,(char *, const char *));
char    *_EXFUN(strchr,(const char *, int));
int    _EXFUN(strcmp,(const char *, const char *));

If CodeCompletion add some codes, it is easy to extend functions defined in this way.

//this is a referrence
int TokensTree::AddToken(Token* newToken,int forceidx)
{
   if(!newToken)
       return -1;

   //linux include convert
   //#define _EXFUN(name, proto) name proto
   //#define _EXPARAM(name, proto) (name) proto
   //#define _DEFUN(name,arglist,args) name(args)
   //#define _DEFUN_VOID(name) name(void)
   {
      //wxString file = GetFilename(newToken->m_File);
      //if( (file.Find("GNUARM")>=0 || file.Find( "MinGW" ) >=0 ) )
      {
         if( newToken->m_Name == "_DEFUN_VOID" )
         {
            wxString name = newToken->m_Args;
            name = name.AfterFirst( '(' );
            name = name.BeforeLast( ')' );
            newToken->m_Name = name ;
            newToken->m_Args = "(void)";
         }
         else if( newToken->m_Name=="_EXFUN" )
         {
            wxString name = newToken->m_Args;
            LPCTSTR p = (LPCTSTR)name;
            name.Replace( "\t", " " );
            name = name.AfterFirst( '(' );
            name = name.BeforeLast( ')' );
            name.Trim().Trim(false);
            
            wxString type = newToken->m_ActualType;
            bool flag = false;
            while( name[0]=='*' || name[0]=='&' )
            {
               type += name[0];
               name.Remove(0,1);
               flag = true;
            }
            if( flag )
            {
               newToken->m_ActualType = type;
               name.Trim(false);
            }
            
            newToken->m_Name = name.BeforeFirst(',');
            newToken->m_Args = name.AfterFirst(',');
         }
      }
   }