Alexandre Julliard : widl: Convert typelib lists to standard Wine lists.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 23 06:17:47 CST 2007


Module: wine
Branch: master
Commit: 5b0bf5dc76f188416c65ad2775cfe30c086ba8b5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5b0bf5dc76f188416c65ad2775cfe30c086ba8b5

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jan 22 14:10:30 2007 +0100

widl: Convert typelib lists to standard Wine lists.

---

 tools/widl/typelib.c    |   14 +++++---------
 tools/widl/widltypes.h  |    9 +++++----
 tools/widl/write_msft.c |    8 +++-----
 3 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/tools/widl/typelib.c b/tools/widl/typelib.c
index f119770..b3a5cd1 100644
--- a/tools/widl/typelib.c
+++ b/tools/widl/typelib.c
@@ -230,8 +230,8 @@ void start_typelib(char *name, attr_t *a
     typelib->name = xstrdup(name);
     typelib->filename = xstrdup(typelib_name);
     typelib->attrs = attrs;
-    typelib->entry = NULL;
-    typelib->importlibs = NULL;
+    list_init( &typelib->entries );
+    list_init( &typelib->importlibs );
 }
 
 void end_typelib(void)
@@ -251,8 +251,7 @@ void add_typelib_entry(type_t *t)
     chat("add kind %i: %s\n", t->kind, t->name);
     entry = xmalloc(sizeof(*entry));
     entry->type = t;
-    LINK(entry, typelib->entry);
-    typelib->entry = entry;
+    list_add_tail( &typelib->entries, &entry->entry );
 }
 
 static void tlb_read(int fd, void *buf, int count)
@@ -365,10 +364,9 @@ void add_importlib(const char *name)
 
     if(!typelib) return;
 
-    for(importlib = typelib->importlibs; importlib; importlib = NEXT_LINK(importlib)) {
+    LIST_FOR_EACH_ENTRY( importlib, &typelib->importlibs, importlib_t, entry )
         if(!strcmp(name, importlib->name))
             return;
-    }
 
     chat("add_importlib: %s\n", name);
 
@@ -377,7 +375,5 @@ void add_importlib(const char *name)
     importlib->name = xstrdup(name);
 
     read_importlib(importlib);
-
-    LINK(importlib, typelib->importlibs);
-    typelib->importlibs = importlib;
+    list_add_head( &typelib->importlibs, &importlib->entry );
 }
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
index 3eb027d..448912f 100644
--- a/tools/widl/widltypes.h
+++ b/tools/widl/widltypes.h
@@ -24,6 +24,7 @@
 #include <stdarg.h>
 #include "guiddef.h"
 #include "wine/rpcfc.h"
+#include "wine/list.h"
 
 #ifndef UUID_DEFINED
 #define UUID_DEFINED
@@ -254,7 +255,7 @@ struct _ifref_t {
 
 struct _typelib_entry_t {
     type_t *type;
-    DECL_LINK(typelib_entry_t);
+    struct list entry;
 };
 
 struct _importinfo_t {
@@ -279,15 +280,15 @@ struct _importlib_t {
 
     int allocated;
 
-    DECL_LINK(importlib_t);
+    struct list entry;
 };
 
 struct _typelib_t {
     char *name;
     char *filename;
     attr_t *attrs;
-    typelib_entry_t *entry;
-    importlib_t *importlibs;
+    struct list entries;
+    struct list importlibs;
 };
 
 void init_types(void);
diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c
index 1167f3b..8a6f653 100644
--- a/tools/widl/write_msft.c
+++ b/tools/widl/write_msft.c
@@ -716,7 +716,8 @@ static importinfo_t *find_importinfo(msf
     if(!name)
         return NULL;
 
-    for(importlib = typelib->typelib->importlibs; importlib; importlib = NEXT_LINK(importlib)) {
+    LIST_FOR_EACH_ENTRY( importlib, &typelib->typelib->importlibs, importlib_t, entry )
+    {
         for(i=0; i < importlib->ntypeinfos; i++) {
             if(!strcmp(name, importlib->importinfos[i].name)) {
                 chat("Found %s in importlib.\n", name);
@@ -2517,10 +2518,7 @@ int create_msft_typelib(typelib_t *typel
     set_custdata(msft, &midl_time_guid, VT_UI4, &cur_time, &msft->typelib_header.CustomDataOffset);
     set_custdata(msft, &midl_version_guid, VT_UI4, &version, &msft->typelib_header.CustomDataOffset);
 
-    for(entry = typelib->entry; entry && NEXT_LINK(entry); entry = NEXT_LINK(entry))
-        ;
-
-    for( ; entry; entry = PREV_LINK(entry))
+    LIST_FOR_EACH_ENTRY( entry, &typelib->entries, typelib_entry_t, entry )
         add_entry(msft, entry);
 
     save_all_changes(msft);




More information about the wine-cvs mailing list