dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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;
+                       }
        ;
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]