James Hawkins : fusion: Add the CorTokenType and use those constants in the assembly code.

Alexandre Julliard julliard at winehq.org
Wed Jul 16 13:33:04 CDT 2008


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

Author: James Hawkins <jhawkins at codeweavers.com>
Date:   Wed Jul 16 10:54:28 2008 -0500

fusion: Add the CorTokenType and use those constants in the assembly code.

---

 dlls/fusion/assembly.c |    7 ++++-
 include/Makefile.in    |    1 +
 include/corhdr.h       |   58 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c
index 56ad060..c1acb1c 100644
--- a/dlls/fusion/assembly.c
+++ b/dlls/fusion/assembly.c
@@ -29,11 +29,14 @@
 #include "dbghelp.h"
 #include "ole2.h"
 #include "fusion.h"
+#include "corhdr.h"
 
 #include "fusionpriv.h"
 #include "wine/debug.h"
 #include "wine/unicode.h"
 
+#define TableFromToken(tk) (TypeFromToken(tk) >> 24)
+
 #define MAX_CLR_TABLES  64
 
 typedef struct tagCLRTABLE
@@ -458,7 +461,7 @@ HRESULT assembly_get_name(ASSEMBLY *assembly, LPSTR *name)
     ASSEMBLYTABLE *asmtbl;
     ULONG offset;
 
-    offset = assembly->tables[0x20].offset; /* FIXME: add constants */
+    offset = assembly->tables[TableFromToken(mdtAssembly)].offset;
     if (offset == -1)
         return E_FAIL;
 
@@ -572,7 +575,7 @@ HRESULT assembly_get_pubkey_token(ASSEMBLY *assembly, LPSTR *token)
 
     *token = NULL;
 
-    offset = assembly->tables[0x20].offset; /* FIXME: add constants */
+    offset = assembly->tables[TableFromToken(mdtAssembly)].offset;
     if (offset == -1)
         return E_FAIL;
 
diff --git a/include/Makefile.in b/include/Makefile.in
index 56cc587..0adef3c 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -106,6 +106,7 @@ SRCDIR_INCLUDES = \
 	compobj.h \
 	cor.h \
 	corerror.h \
+	corhdr.h \
 	cpl.h \
 	cryptdlg.h \
 	cryptuiapi.h \
diff --git a/include/corhdr.h b/include/corhdr.h
new file mode 100644
index 0000000..4064efd
--- /dev/null
+++ b/include/corhdr.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2008 James Hawkins
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_CORHDR_H
+#define __WINE_CORHDR_H
+
+typedef enum CorTokenType
+{
+    mdtModule                   = 0x00000000,
+    mdtTypeRef                  = 0x01000000,
+    mdtTypeDef                  = 0x02000000,
+    mdtFieldDef                 = 0x04000000,
+    mdtMethodDef                = 0x06000000,
+    mdtParamDef                 = 0x08000000,
+    mdtInterfaceImpl            = 0x09000000,
+    mdtMemberRef                = 0x0a000000,
+    mdtCustomAttribute          = 0x0c000000,
+    mdtPermission               = 0x0e000000,
+    mdtSignature                = 0x11000000,
+    mdtEvent                    = 0x14000000,
+    mdtProperty                 = 0x17000000,
+    mdtModuleRef                = 0x1a000000,
+    mdtTypeSpec                 = 0x1b000000,
+    mdtAssembly                 = 0x20000000,
+    mdtAssemblyRef              = 0x23000000,
+    mdtFile                     = 0x26000000,
+    mdtExportedType             = 0x27000000,
+    mdtManifestResource         = 0x28000000,
+    mdtGenericParam             = 0x2a000000,
+    mdtMethodSpec               = 0x2b000000,
+    mdtGenericParamConstraint   = 0x2c000000,
+    mdtString                   = 0x70000000,
+    mdtName                     = 0x71000000,
+    mdtBaseType                 = 0x72000000,
+} CorTokenType;
+
+#define RidToToken(rid,tktype) ((rid) |= (tktype))
+#define TokenFromRid(rid,tktype) ((rid) | (tktype))
+#define RidFromToken(tk) ((RID)((tk) & 0x00ffffff))
+#define TypeFromToken(tk) ((ULONG32)((tk) & 0xff000000))
+#define IsNilToken(tk) ((RidFromToken(tk)) == 0)
+
+#endif /* __WINE_CORHDR_H */




More information about the wine-cvs mailing list