PeUtil.cp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. (* ============================================================ *)
  2. (* PeUtil is the module which writes PE files using the *)
  3. (* managed interface. *)
  4. (* Copyright (c) John Gough 1999, 2000. *)
  5. (* ============================================================ *)
  6. (* ============================================================ *)
  7. (* THIS IS THE EMPTY VERSION, THAT IS REQUIRED TO BOOTSTRAP *)
  8. (* THE JVM VERSION WITHOUT THE MSCORLIB ASSEMBLY AVAILABLE. *)
  9. (* ============================================================ *)
  10. (* ============================================================ *)
  11. MODULE PeUtil;
  12. IMPORT
  13. GPCPcopyright,
  14. Mu := MsilUtil,
  15. Id := IdDesc,
  16. Lv := LitValue,
  17. Sy := Symbols,
  18. Ty := TypeDesc;
  19. (* ============================================================ *)
  20. TYPE PeFile* = POINTER TO RECORD (Mu.MsilFile)
  21. (* Fields inherited from MsilFile *
  22. * srcS* : LitValue.CharOpen; (* source file name *)
  23. * outN* : LitValue.CharOpen; (* output file name *)
  24. * proc* : ProcInfo;
  25. *)
  26. END;
  27. (* ============================================================ *)
  28. (* Constructor Method *)
  29. (* ============================================================ *)
  30. PROCEDURE newPeFile*(IN nam : ARRAY OF CHAR; isDll : BOOLEAN) : PeFile;
  31. BEGIN
  32. RETURN NIL;
  33. END newPeFile;
  34. (* ============================================================ *)
  35. PROCEDURE (t : PeFile)fileOk*() : BOOLEAN;
  36. BEGIN
  37. RETURN FALSE;
  38. END fileOk;
  39. (* ============================================================ *)
  40. PROCEDURE (os : PeFile)MkNewProcInfo*(proc : Sy.Scope);
  41. BEGIN
  42. END MkNewProcInfo;
  43. (* ============================================================ *)
  44. PROCEDURE (os : PeFile)newLabel*() : Mu.Label;
  45. BEGIN
  46. RETURN NIL;
  47. END newLabel;
  48. (* ============================================================ *)
  49. (* Exported Methods *)
  50. (* ============================================================ *)
  51. PROCEDURE (os : PeFile)MethodDecl*(attr : SET; proc : Id.Procs);
  52. END MethodDecl;
  53. (* ============================================================ *)
  54. PROCEDURE (os : PeFile)ExternList*();
  55. END ExternList;
  56. (* ============================================================ *)
  57. PROCEDURE (os : PeFile)DefLab*(l : Mu.Label);
  58. END DefLab;
  59. (* -------------------------------------------- *)
  60. PROCEDURE (os : PeFile)DefLabC*(l : Mu.Label; IN c : ARRAY OF CHAR);
  61. END DefLabC;
  62. (* ============================================================ *)
  63. PROCEDURE (os : PeFile)Code*(code : INTEGER);
  64. END Code;
  65. (* -------------------------------------------- *)
  66. PROCEDURE (os : PeFile)CodeI*(code,int : INTEGER);
  67. END CodeI;
  68. (* -------------------------------------------- *)
  69. PROCEDURE (os : PeFile)CodeT*(code : INTEGER; type : Sy.Type);
  70. END CodeT;
  71. (* -------------------------------------------- *)
  72. PROCEDURE (os : PeFile)CodeTn*(code : INTEGER; type : Sy.Type);
  73. END CodeTn;
  74. (* -------------------------------------------- *)
  75. PROCEDURE (os : PeFile)CodeL*(code : INTEGER; long : LONGINT);
  76. END CodeL;
  77. (* -------------------------------------------- *)
  78. PROCEDURE (os : PeFile)CodeR*(code : INTEGER; real : REAL);
  79. END CodeR;
  80. (* -------------------------------------------- *)
  81. PROCEDURE (os : PeFile)CodeLb*(code : INTEGER; labl : Mu.Label);
  82. END CodeLb;
  83. (* ============================================================ *)
  84. PROCEDURE (os : PeFile)StaticCall*(s : INTEGER; d : INTEGER);
  85. END StaticCall;
  86. (* -------------------------------------------- *)
  87. PROCEDURE (os : PeFile)CodeS*(code : INTEGER; str : INTEGER);
  88. END CodeS;
  89. (* ============================================================ *)
  90. PROCEDURE (os : PeFile)Try*();
  91. END Try;
  92. (* -------------------------------------------- *)
  93. PROCEDURE (os : PeFile)Catch*(proc : Id.Procs);
  94. END Catch;
  95. (* -------------------------------------------- *)
  96. PROCEDURE (os : PeFile)CloseCatch*();
  97. END CloseCatch;
  98. (* -------------------------------------------- *)
  99. PROCEDURE (os : PeFile)CopyCall*(typ : Ty.Record);
  100. END CopyCall;
  101. (* -------------------------------------------- *)
  102. PROCEDURE (os : PeFile)PushStr*(IN str : ARRAY OF CHAR);
  103. END PushStr;
  104. (* ============================================================ *)
  105. PROCEDURE (os : PeFile)CallIT*(code : INTEGER;
  106. proc : Id.Procs;
  107. type : Ty.Procedure);
  108. END CallIT;
  109. (* ============================================================ *)
  110. PROCEDURE (os : PeFile)CallCT*(proc : Id.Procs;
  111. type : Ty.Procedure);
  112. END CallCT;
  113. (* ============================================================ *)
  114. PROCEDURE (os : PeFile)CallDelegate*(typ : Ty.Procedure);
  115. END CallDelegate;
  116. (* ============================================================ *)
  117. PROCEDURE (os : PeFile)PutGetS*(code : INTEGER;
  118. blk : Id.BlkId;
  119. fId : Id.VarId);
  120. END PutGetS;
  121. (* -------------------------------------------- *)
  122. PROCEDURE (os : PeFile)GetValObj*(code : INTEGER; ptrT : Ty.Pointer);
  123. END GetValObj;
  124. (* -------------------------------------------- *)
  125. PROCEDURE (os : PeFile)PutGetXhr*(code : INTEGER;
  126. proc : Id.Procs;
  127. locl : Id.LocId);
  128. END PutGetXhr;
  129. (* -------------------------------------------- *)
  130. PROCEDURE (os : PeFile)PutGetF*(code : INTEGER;
  131. fId : Id.FldId);
  132. END PutGetF;
  133. (* ============================================================ *)
  134. (* ============================================================ *)
  135. PROCEDURE (os : PeFile)MkNewRecord*(typ : Ty.Record);
  136. END MkNewRecord;
  137. (* ============================================================ *)
  138. (* ============================================================ *)
  139. PROCEDURE (os : PeFile)MkNewProcVal*(p : Sy.Idnt; (* src Proc *)
  140. t : Sy.Type); (* dst Type *)
  141. END MkNewProcVal;
  142. (* ============================================================ *)
  143. PROCEDURE (os : PeFile)CallSuper*(rTp : Ty.Record;
  144. prc : Id.PrcId);
  145. END CallSuper;
  146. (* ============================================================ *)
  147. PROCEDURE (os : PeFile)InitHead*(rTp : Ty.Record;
  148. prc : Id.PrcId);
  149. END InitHead;
  150. (* ============================================================ *)
  151. PROCEDURE (os : PeFile)CopyHead*(typ : Ty.Record);
  152. END CopyHead;
  153. (* ============================================================ *)
  154. PROCEDURE (os : PeFile)MarkInterfaces*(IN seq : Sy.TypeSeq);
  155. END MarkInterfaces;
  156. (* ============================================================ *)
  157. PROCEDURE (os : PeFile)MainHead*(xAtt : SET);
  158. END MainHead;
  159. PROCEDURE (os : PeFile)SubSys*(xAtt : SET);
  160. END SubSys;
  161. (* ============================================================ *)
  162. PROCEDURE (os : PeFile)StartBoxClass*(rec : Ty.Record;
  163. att : SET;
  164. blk : Id.BlkId);
  165. END StartBoxClass;
  166. PROCEDURE (os : PeFile)MainTail*();
  167. END MainTail;
  168. (* ------------------------------------------------------------ *)
  169. PROCEDURE (os : PeFile)MethodTail*(id : Id.Procs);
  170. END MethodTail;
  171. (* ------------------------------------------------------------ *)
  172. PROCEDURE (os : PeFile)ClinitTail*();
  173. END ClinitTail;
  174. (* ------------------------------------------------------------ *)
  175. PROCEDURE (os : PeFile)CopyTail*();
  176. END CopyTail;
  177. (* ------------------------------------------------------------ *)
  178. PROCEDURE (os : PeFile)InitTail*(typ : Ty.Record);
  179. END InitTail;
  180. (* ============================================================ *)
  181. PROCEDURE (os : PeFile)ClinitHead*();
  182. END ClinitHead;
  183. (* ============================================================ *)
  184. PROCEDURE (os : PeFile)EmitField*(id : Id.AbVar; att : SET);
  185. END EmitField;
  186. (* ============================================================ *)
  187. PROCEDURE (os : PeFile)EmitEventMethods*(id : Id.AbVar);
  188. END EmitEventMethods;
  189. (* ============================================================ *)
  190. PROCEDURE (os : PeFile)MkAndLinkDelegate*(dl : Sy.Idnt;
  191. id : Sy.Idnt;
  192. ty : Sy.Type;
  193. isA : BOOLEAN);
  194. END MkAndLinkDelegate;
  195. (* ============================================================ *)
  196. (* ============================================================ *)
  197. PROCEDURE (os : PeFile)EmitPTypeBody*(tId : Id.TypId);
  198. END EmitPTypeBody;
  199. (* ============================================================ *)
  200. (* End of Procedure Variable and Event Stuff *)
  201. (* ============================================================ *)
  202. PROCEDURE (os : PeFile)Line*(nm : INTEGER),EMPTY;
  203. (* ============================================================ *)
  204. PROCEDURE (os : PeFile)LoadType*(id : Sy.Idnt);
  205. END LoadType;
  206. (* ============================================================ *)
  207. PROCEDURE (os : PeFile)Finish*();
  208. END Finish;
  209. (* ============================================================ *)
  210. PROCEDURE (os : PeFile)RefRTS*();
  211. END RefRTS;
  212. (* ============================================================ *)
  213. PROCEDURE (os : PeFile)StartNamespace*(nm : Lv.CharOpen);
  214. END StartNamespace;
  215. (* ============================================================ *)
  216. PROCEDURE (os : PeFile)MkBodyClass*(mod : Id.BlkId);
  217. END MkBodyClass;
  218. (* ============================================================ *)
  219. PROCEDURE (os : PeFile)ClassHead*(attSet : SET;
  220. thisRc : Ty.Record;
  221. superT : Ty.Record);
  222. END ClassHead;
  223. (* ============================================================ *)
  224. PROCEDURE (os : PeFile)CheckNestedClass*(typ : Ty.Record;
  225. scp : Sy.Scope;
  226. rNm : Lv.CharOpen);
  227. END CheckNestedClass;
  228. (* ============================================================ *)
  229. PROCEDURE (os : PeFile)ClassTail*();
  230. END ClassTail;
  231. (* ============================================================ *)
  232. PROCEDURE (os : PeFile)MkRecX*(t : Ty.Record; s : Sy.Scope);
  233. END MkRecX;
  234. (* ============================================================ *)
  235. PROCEDURE (os : PeFile)MkPtrX*(t : Ty.Pointer);
  236. END MkPtrX;
  237. (* ============================================================ *)
  238. PROCEDURE (os : PeFile)MkArrX*(t : Ty.Array);
  239. END MkArrX;
  240. (* ============================================================ *)
  241. PROCEDURE (os : PeFile)MkBasX*(t : Ty.Base);
  242. END MkBasX;
  243. (* ============================================================ *)
  244. PROCEDURE (os : PeFile)MkEnuX*(t : Ty.Enum; s : Sy.Scope);
  245. END MkEnuX;
  246. (* ============================================================ *)
  247. PROCEDURE (os : PeFile)NumberParams*(pId : Id.Procs;
  248. pTp : Ty.Procedure);
  249. END NumberParams;
  250. (* ============================================================ *)
  251. PROCEDURE (os : PeFile)SwitchHead*(num : INTEGER);
  252. END SwitchHead;
  253. PROCEDURE (os : PeFile)SwitchTail*();
  254. END SwitchTail;
  255. PROCEDURE (os : PeFile)LstLab*(l : Mu.Label);
  256. END LstLab;
  257. (* ============================================================ *)
  258. (* ============================================================ *)
  259. END PeUtil.
  260. (* ============================================================ *)
  261. (* ============================================================ *)