Explorar el Código

Expanded on TPR file listing to adapt it to folders.
Corrected the function that converts the '\\' to '/'.


git-svn-id: file:///var/svn/tigccpp/trunk@356 9552661e-59e3-4036-b4f2-dbe53926924f

joeyadams hace 18 años
padre
commit
43599bc737
Se han modificado 5 ficheros con 110 adiciones y 68 borrados
  1. 35 6
      ktigcc/KTIGCC.pws
  2. 1 1
      ktigcc/mainform.ui
  3. 18 14
      ktigcc/mainform.ui.h
  4. 41 39
      ktigcc/tpr.cxx
  5. 15 8
      ktigcc/tpr.h

+ 35 - 6
ktigcc/KTIGCC.pws

@@ -6,16 +6,38 @@ RunInTerminal=true
 clean before build=false
 
 [filenumbers]
-0=708
-1=42
-2=27
-3=4
+0=1
+1=1
+2=786
+3=1
+4=14
+5=1
+6=1
+7=46
+8=11
+9=15
+10=13
+11=1
+12=91
+13=523
+14=148
 
 [filemarkers]
 0=
 1=
 2=
 3=
+4=
+5=
+6=
+7=
+8=
+9=
+10=
+11=
+12=
+13=
+14=
 
 [File View]
 filter.file.unmatch=*.so *.o *.a *.la
@@ -23,8 +45,15 @@ filter.file.ignore.hidden=0
 filter.dir.ignore.hidden=0
 
 [filelist]
-0=/root/ktigcc/mainform.ui.h
-1=/root/ktigcc/ktigcc.cpp
+0=/root/CVS/ktigcc9/ktigcc.cpp
+1=/root/CVS/ktigcc9/.ui/mainform.cpp
+2=/root/CVS/ktigcc9/mainform.ui.h
+3=/root/CVS/ktigcc9/.moc/moc_mainform.cpp
+4=/root/CVS/ktigcc9/tpr.h
+5=/root/CVS/ktigcc9/ktigcc.pro
+6=/root/CVS/ktigcc9/mainform.ui
+7=/root/CVS/ktigcc9/tpr.cxx
+8=/root/CVS/ktigcc9/.ui/mainform.h
 
 [Project Tree]
 0=0

+ 1 - 1
ktigcc/mainform.ui

@@ -1356,7 +1356,7 @@
 <functions>
     <function access="private" specifier="static" returnType="QString">SGetFileName( int mode, short fileFilter, const QString &amp; caption, QWidget * parent )</function>
     <function access="private" specifier="static" returnType="QStringList">SGetFileName_Multiple( short fileFilter, const QString &amp; caption, QWidget * parent )</function>
-    <function access="private" specifier="non virtual">fileOpen_addList( QListViewItem * * parent, const QStringList &amp; fileList, void * dir )</function>
+    <function access="private" specifier="non virtual">fileOpen_addList( QListViewItem * * parent, void * fileListV, void * dir )</function>
     <function access="private" specifier="non virtual">updateSizes()</function>
     <function access="private" specifier="non virtual">newFile( QListViewItem * parent, const QString &amp; fileCaption, const QString &amp; fileName, const QString &amp; text, const char * iconName )</function>
     <function access="private" specifier="non virtual">newFile( QListViewItem * parent, QString text, const char * iconName )</function>

+ 18 - 14
ktigcc/mainform.ui.h

@@ -520,16 +520,19 @@ QStringList MainForm::SGetFileName_Multiple(short fileFilter,const QString &capt
   return ret;
 }
 
-void MainForm::fileOpen_addList(QListViewItem **parent,const QStringList &fileList,void *dir)
+void MainForm::fileOpen_addList(QListViewItem **parent,void *fileListV,void *dir)
 {
-  int i;
+  int i,e;
   KURL tmp;
-  i=fileList.count();
-  while (i-->0)
+  TPRFileList *fileList=(TPRFileList*)fileListV;
+  e=fileList->path.count();
+  for (i=0;i<e;i++)
   {
     tmp=*reinterpret_cast<const KURL *>(dir);
-    tmp.setFileName(fileList[i]);
-    newFile(*parent,fileList[i],tmp.path(),loadFileText(tmp.path()),"fileh.png");
+    tmp.setFileName(fileList->path[i]);
+    newFile(*parent,fileList->path[i],tmp.path(),loadFileText(tmp.path()),"fileh.png");
+    /*eventually, there will be different file icons,
+    but that's not in the way of functionality*/
   }
 }
 
@@ -540,14 +543,15 @@ void MainForm::fileOpen()
   dir.setPath(fileName);
   if (!loadTPR(fileName))
   {
-    fileOpen_addList(&hFilesListItem,TPRData.h_files,&dir);
-    fileOpen_addList(&cFilesListItem,TPRData.c_files,&dir);
-    fileOpen_addList(&sFilesListItem,TPRData.s_files,&dir);
-    fileOpen_addList(&asmFilesListItem,TPRData.asm_files,&dir);
-    fileOpen_addList(&oFilesListItem,TPRData.o_files,&dir);
-    fileOpen_addList(&aFilesListItem,TPRData.a_files,&dir);
-    fileOpen_addList(&txtFilesListItem,TPRData.txt_files,&dir);
-    fileOpen_addList(&othFilesListItem,TPRData.oth_files,&dir);
+    fileOpen_addList(&hFilesListItem,&TPRData.h_files,&dir);
+    fileOpen_addList(&cFilesListItem,&TPRData.c_files,&dir);
+    fileOpen_addList(&cFilesListItem,&TPRData.quill_files,&dir); //Give quills the special behavior they need later on.
+    fileOpen_addList(&sFilesListItem,&TPRData.s_files,&dir);
+    fileOpen_addList(&asmFilesListItem,&TPRData.asm_files,&dir);
+    fileOpen_addList(&oFilesListItem,&TPRData.o_files,&dir);
+    fileOpen_addList(&aFilesListItem,&TPRData.a_files,&dir);
+    fileOpen_addList(&txtFilesListItem,&TPRData.txt_files,&dir);
+    fileOpen_addList(&othFilesListItem,&TPRData.oth_files,&dir);
   }
 }
 

+ 41 - 39
ktigcc/tpr.cxx

@@ -40,13 +40,11 @@ char *find_numbered_param(char *s, const char*t, int *i)
 QString encapsulate_long_filename(const char *file)
 {
     QString s=file;
-
+    int o;
+  
 #ifndef __WIN32__
-   {
-       char *p;
-       while ((p=strchr(s,'\\')))
-           *p='/';
-   }       
+     while ((o=s.find('\\',0,TRUE))>=0)
+         s[o]='/';
 #endif
     
     return s;
@@ -91,10 +89,7 @@ int read_line(FILE *f, char *buffer, int *l)
 //some items from the TSR might still be ignored or not shown here.
 //if you need one of them, add an entry to one of the
 //definition "tables".
-int parse_file(FILE *f,tprSettings &settings,
-    tprLibOpts &libopts,QStringList &h_files,QStringList &c_files,
-    QStringList &s_files,QStringList &asm_files,QStringList &o_files,
-    QStringList &a_files,QStringList &txt_files,QStringList &oth_files)
+int parse_file(FILE *f,TPRDataStruct *dest)
 {
   char buffer[256];
   int l = 1;
@@ -138,8 +133,8 @@ int parse_file(FILE *f,tprSettings &settings,
 #define boolean_param(token,setting) \
             if ( (p=find_param(buffer, token)) ) \
             { \
-                if(!strcmp(p, "0")) settings.setting = FALSE; \
-                else if(!strcmp(p, "1")) settings.setting = TRUE; \
+                if(!strcmp(p, "0")) dest->settings.setting = FALSE; \
+                else if(!strcmp(p, "1")) dest->settings.setting = TRUE; \
                 else return l; \
                 continue; \
             } else
@@ -147,7 +142,7 @@ int parse_file(FILE *f,tprSettings &settings,
 #define string_param(token,setting) \
             if ( (p=find_param(buffer, token)) ) \
             { \
-                if (*p) settings.setting = p; \
+                if (*p) dest->settings.setting = p; \
                 continue; \
             } else
 
@@ -201,8 +196,8 @@ int parse_file(FILE *f,tprSettings &settings,
 #define boolean_param(token,setting) \
             if ( (p=find_param(buffer, token)) ) \
             { \
-                if(!strcmp(p, "0")) libopts.setting = FALSE; \
-                else if(!strcmp(p, "1")) libopts.setting = TRUE; \
+                if(!strcmp(p, "0")) dest->libopts.setting = FALSE; \
+                else if(!strcmp(p, "1")) dest->libopts.setting = TRUE; \
                 else return l; \
                 continue; \
             } else
@@ -212,15 +207,15 @@ int parse_file(FILE *f,tprSettings &settings,
             { \
                 if (!strcmp(p,"None") || !strcmp(p,"AMS") \
                     || !strcmp(p,"Direct")) \
-                    libopts.setting = RT_NONE; \
+                    dest->libopts.setting = RT_NONE; \
                 else if (!strcmp(p, "Precomputed")) \
-                    libopts.setting = RT_PRECOMP; \
+                    dest->libopts.setting = RT_PRECOMP; \
                 else if (!strcmp(p, "Kernel")) \
-                    libopts.setting = RT_KERNEL; \
+                    dest->libopts.setting = RT_KERNEL; \
                 else if (!strcmp(p, "Compressed")) \
-                    libopts.setting = RT_COMPRESSED; \
+                    dest->libopts.setting = RT_COMPRESSED; \
                 else if (!strcmp(p, "F-Line")) \
-                    libopts.setting = RT_FLINE; \
+                    dest->libopts.setting = RT_FLINE; \
                 else if (strcmp(p, "Unknown")) \
                     return l; \
                 continue; \
@@ -237,7 +232,7 @@ int parse_file(FILE *f,tprSettings &settings,
             {
                 int major, minor;
                 if ((strlen(p)==4) && (sscanf(p,"%1d.%2d",&major,&minor)==2))
-                    libopts.minams = major * 100 + minor;
+                    dest->libopts.minams = major * 100 + minor;
                 else
                     return l;
                 continue;
@@ -270,20 +265,23 @@ int parse_file(FILE *f,tprSettings &settings,
             if( (p=find_numbered_param(buffer, "C File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                c_files << s;
+                dest->c_files.path << s;
+                dest->c_files.folder << QString::null;
 
                 continue;
             }
             else if( (p=find_numbered_param(buffer, "C File %i Folder=", &v)) )
-            { // ignore folder specification for now
+            {
+                
                 continue;
             }
 
             else if( (p=find_numbered_param(buffer, "GNU Assembler File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                s_files << s;
-
+                dest->s_files.path << s;
+                dest->s_files.folder << QString::null;
+              
                 continue;
             }
             else if( (p=find_numbered_param(buffer, "GNU Assembler File %i Folder=", &v)) )
@@ -294,8 +292,9 @@ int parse_file(FILE *f,tprSettings &settings,
             else if( (p=find_numbered_param(buffer, "Header File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                h_files << s;
-
+                dest->h_files.path << s;
+                dest->h_files.folder << QString::null;
+                
                 continue;
             }
             else if( (p=find_numbered_param(buffer, "Header File %i Folder=", &v)) )
@@ -306,8 +305,9 @@ int parse_file(FILE *f,tprSettings &settings,
             else if( (p=find_numbered_param(buffer, "Assembler File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                asm_files << s;
-
+                dest->asm_files.path << s;
+                dest->asm_files.folder << QString::null;
+              
                 continue;
             }
             else if( (p=find_numbered_param(buffer, "Assembler File %i Folder=", &v)) )
@@ -318,8 +318,9 @@ int parse_file(FILE *f,tprSettings &settings,
             else if( (p=find_numbered_param(buffer, "Archive File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                a_files << s;
-
+                dest->a_files.path << s;
+                dest->a_files.folder << QString::null;
+              
                 continue;
             }
             else if( (p=find_numbered_param(buffer, "Archive File %i Folder=", &v)) )
@@ -330,7 +331,8 @@ int parse_file(FILE *f,tprSettings &settings,
             else if( (p=find_numbered_param(buffer, "Text File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                txt_files << s;
+                dest->txt_files.path << s;
+                dest->txt_files.folder << QString::null;
               
                 continue;
             }
@@ -340,11 +342,12 @@ int parse_file(FILE *f,tprSettings &settings,
             }
 
             else if( (p=find_numbered_param(buffer, "Quill File %i=", &v)) )
-            { // Quill file: treat like C file and add -quill flag
+            {
                 QString s = encapsulate_long_filename(p);
-                o_files << s; //is a quill an object file?
+                dest->quill_files.path << s;
+                dest->quill_files.folder << QString::null;
 
-                settings.quill = TRUE; // -quill flag needed
+                dest->settings.quill = TRUE; // -quill flag needed
 
                 continue;
             }
@@ -356,7 +359,8 @@ int parse_file(FILE *f,tprSettings &settings,
             else if( (p=find_numbered_param(buffer, "Other File %i=", &v)) )
             {
                 QString s = encapsulate_long_filename(p);
-                oth_files << s;
+                dest->oth_files.path << s;
+                dest->oth_files.folder << QString::null;
                 
                 continue;
             }
@@ -383,9 +387,7 @@ short loadTPRIndirect(QString &fileName,TPRDataStruct *dest)
       //fprintf(stderr, "Unable to open this file: <%s>\n", filename); ***to be implemented the KDE way.
       return -1;
   }
-  ret=parse_file(f,dest->settings,dest->libopts,dest->h_files,
-    dest->c_files,dest->s_files,dest->asm_files,dest->o_files,
-    dest->a_files,dest->txt_files,dest->oth_files);
+  ret=parse_file(f,dest);
   fclose(f);
   return ret;
 }

+ 15 - 8
ktigcc/tpr.h

@@ -84,18 +84,25 @@ struct tprlibopts
     tprRelocType data_ref_format;
 };
 
+typedef struct
+{
+  QStringList path;
+  QStringList folder;
+} TPRFileList;
+
 typedef struct
 {
   tprSettings settings;
   tprLibOpts libopts;
-  QStringList h_files;
-  QStringList c_files;
-  QStringList s_files;
-  QStringList asm_files;
-  QStringList o_files;
-  QStringList a_files;
-  QStringList txt_files;
-  QStringList oth_files;
+  TPRFileList h_files;
+  TPRFileList c_files;
+  TPRFileList s_files;
+  TPRFileList asm_files;
+  TPRFileList o_files;
+  TPRFileList a_files;
+  TPRFileList txt_files;
+  TPRFileList oth_files;
+  TPRFileList quill_files;
 } TPRDataStruct;
 
 #define loadTPR(fileName) (loadTPRIndirect(fileName,&TPRData))