[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_grammar.y,1.35,1.36
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_grammar.y,1.35,1.36 |
Date: |
Tue, 06 May 2003 05:53:23 -0400 |
Update of /cvsroot/dotgnu-pnet/pnet/ilasm
In directory subversions:/tmp/cvs-serv17226/ilasm
Modified Files:
ilasm_grammar.y
Log Message:
Implement PInvoke lookups for fields so that global variables
within shared objects can be accessed.
Index: ilasm_grammar.y
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilasm/ilasm_grammar.y,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -r1.35 -r1.36
*** ilasm_grammar.y 10 Mar 2003 20:52:32 -0000 1.35
--- ilasm_grammar.y 6 May 2003 09:53:21 -0000 1.36
***************
*** 469,473 ****
#define SET_FIELD(name) yyval.fieldAttrs.flags =
IL_META_FIELDDEF_##name; \
yyval.fieldAttrs.nativeType.string = 0; \
!
yyval.fieldAttrs.nativeType.len = 0
#define SET_METHOD(name) yyval.methodAttrs.flags = \
IL_META_METHODDEF_##name; \
--- 469,476 ----
#define SET_FIELD(name) yyval.fieldAttrs.flags =
IL_META_FIELDDEF_##name; \
yyval.fieldAttrs.nativeType.string = 0; \
!
yyval.fieldAttrs.nativeType.len = 0; \
!
yyval.fieldAttrs.pinvokeAttrs = 0; \
! yyval.fieldAttrs.name1
= 0; \
! yyval.fieldAttrs.name2
= 0
#define SET_METHOD(name) yyval.methodAttrs.flags = \
IL_META_METHODDEF_##name; \
***************
*** 592,595 ****
--- 595,601 ----
ILInt64 flags;
ILIntString nativeType;
+ ILInt64 pinvokeAttrs;
+ char *name1;
+ char *name2;
} fieldAttrs;
struct {
***************
*** 1477,1480 ****
--- 1483,1487 ----
ILFieldMarshal *marshal;
ILConstant *constant;
+ ILModule *module;
field = ILAsmFieldCreate(ILAsmClass, $5.string,
$3.flags, $4);
***************
*** 1495,1498 ****
--- 1502,1515 ----
}
}
+ if(($3.flags & IL_META_FIELDDEF_PINVOKE_IMPL)
!= 0)
+ {
+ /* Add PInvoke information to the field
*/
+ module = FindModuleRef(ILAsmImage,
$3.name1);
+ if(!ILPInvokeFieldCreate(field, 0,
$3.pinvokeAttrs,
+
module, $3.name2))
+ {
+ ILAsmOutOfMemory();
+ }
+ }
if($2 != (ILInt64)0xFFFFFFFF)
{
***************
*** 1625,1628 ****
--- 1642,1667 ----
$$.nativeType.len = 0;
}
+ if(($1.flags & IL_META_FIELDDEF_PINVOKE_IMPL)
!= 0)
+ {
+ $$.pinvokeAttrs = $1.pinvokeAttrs;
+ $$.name1 = $1.name1;
+ $$.name2 = $1.name2;
+ if(($2.flags &
IL_META_FIELDDEF_PINVOKE_IMPL) != 0)
+ {
+ yyerror("duplicate
`pinvokeimpl' attribute on field");
+ }
+ }
+ else if(($2.flags &
IL_META_FIELDDEF_PINVOKE_IMPL) != 0)
+ {
+ $$.pinvokeAttrs = $2.pinvokeAttrs;
+ $$.name1 = $2.name1;
+ $$.name2 = $2.name2;
+ }
+ else
+ {
+ $$.pinvokeAttrs = 0;
+ $$.name1 = 0;
+ $$.name2 = 0;
+ }
}
;
***************
*** 1647,1650 ****
--- 1686,1714 ----
| K_LITERAL { SET_FIELD(LITERAL); }
| K_NOTSERIALIZED { SET_FIELD(NOT_SERIALIZED); }
+ | K_PINVOKEIMPL '(' ComposedString K_AS
+ ComposedString PInvokeAttributes ')' {
+ $$.flags = IL_META_FIELDDEF_PINVOKE_IMPL;
+ $$.nativeType.string = 0;
+ $$.nativeType.len = 0;
+ $$.pinvokeAttrs = $6;
+ $$.name1 = $3.string;
+ $$.name2 = $5.string;
+ }
+ | K_PINVOKEIMPL '(' ComposedString PInvokeAttributes ')' {
+ $$.flags = IL_META_FIELDDEF_PINVOKE_IMPL;
+ $$.nativeType.string = 0;
+ $$.nativeType.len = 0;
+ $$.pinvokeAttrs = $4;
+ $$.name1 = $3.string;
+ $$.name2 = 0;
+ }
+ | K_PINVOKEIMPL '(' PInvokeAttributes ')' {
+ $$.flags = IL_META_FIELDDEF_PINVOKE_IMPL;
+ $$.nativeType.string = 0;
+ $$.nativeType.len = 0;
+ $$.pinvokeAttrs = $3;
+ $$.name1 = 0;
+ $$.name2 = 0;
+ }
;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/ilasm ilasm_grammar.y,1.35,1.36,
Rhys Weatherley <address@hidden> <=
- Prev by Date:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2329,1.2330
- Next by Date:
[Dotgnu-pnet-commits] CVS: pnet/image lib_attrs.c,1.8,1.9 link.c,1.21,1.22 member.c,1.23,1.24 meta_build.c,1.24,1.25 meta_writer.c,1.11,1.12 program.h,1.16,1.17
- Previous by thread:
[Dotgnu-pnet-commits] CVS: pnet ChangeLog,1.2329,1.2330
- Next by thread:
[Dotgnu-pnet-commits] CVS: pnet/image lib_attrs.c,1.8,1.9 link.c,1.21,1.22 member.c,1.23,1.24 meta_build.c,1.24,1.25 meta_writer.c,1.11,1.12 program.h,1.16,1.17
- Index(es):