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