symconst.inc 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. {
  2. $Id$
  3. Copyright (c) 1993-98 by Florian Klaempfl, Pierre Muller
  4. Symbol table constants
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program; if not, write to the Free Software
  15. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. ****************************************************************************
  17. }
  18. const
  19. def_alignment = 4;
  20. { symbol options }
  21. sp_public = $1;
  22. sp_private = $2;
  23. sp_published = $4;
  24. sp_protected = $8;
  25. sp_forwarddef = $10;
  26. sp_static = $20;
  27. { flags for a definition }
  28. df_needsrtti = $1; { the definitions needs rtti }
  29. df_hasrtti = $2; { the rtti is generated }
  30. { options for tprocdef and tprocvardef }
  31. poexceptions = $1; { unused }
  32. povirtualmethod = $2; { Procedure is a virtual method }
  33. poclearstack = $4; { Use IBM flat calling convention. (Used by GCC.) }
  34. poconstructor = $8; { Procedure is a constructor }
  35. podestructor = $10; { Procedure is a destructor }
  36. pointernproc = $20; { Procedure has compiler magic}
  37. poexports = $40; { Procedure is exported }
  38. poiocheck = $80; { IO checking should be done after a call to the procedure }
  39. poabstractmethod = $100; { Procedure is an abstract method }
  40. pointerrupt = $200; { Procedure is an interrupt handler }
  41. poinline = $400; { Procedure is an assembler macro }
  42. poassembler = $800; { Procedure is written in assembler }
  43. pooperator = $1000; { Procedure defines an operator }
  44. poexternal = $2000; { Procedure is external (in other object or lib)}
  45. poleftright = $4000; { Push parameters from left to right }
  46. poproginit = $8000; { Program initialization }
  47. postaticmethod = $10000; { static method }
  48. pooverridingmethod=$20000; { method with override directive }
  49. poclassmethod = $40000; { class method }
  50. pounitinit = $80000; { unit initialization }
  51. pomethodpointer = $100000; { method pointer, only in procvardef, also used for 'with object do' }
  52. pocdecl = $200000; { procedure uses C styled calling }
  53. popalmossyscall = $400000; { procedure is a PalmOS system call }
  54. pointernconst = $800000; { procedure has constant evaluator intern }
  55. poregister = $1000000; { procedure uses register (fastcall) calling }
  56. pounitfinalize = $2000000; { unit finalization }
  57. postdcall = $4000000; { procedure uses stdcall call }
  58. pomsgstr = $8000000; { method for string message handling }
  59. pomsgint = $10000000; { method for int message handling }
  60. posavestdregs = $20000000; { save std regs cdecl and stdcall need that ! }
  61. pocontainsself = $40000000; { self is passed explicit to the compiler }
  62. { relevant options for assigning a proc or a procvar to a procvar }
  63. po_compatibility_options = $7FFFFFFF-
  64. (pomethodpointer+povirtualmethod+pooverridingmethod);
  65. { options for objects and classes }
  66. oo_is_abstract = $1;
  67. oo_is_class = $2;
  68. oo_hasvirtual = $4;
  69. oo_hasprivate = $8;
  70. oo_hasprotected = $10;
  71. oo_isforward = $20;
  72. oo_can_have_published = $40;
  73. oo_hasconstructor = $80;
  74. oo_hasdestructor = $100;
  75. oo_hasvmt = $200;
  76. oo_hasmsgstr = $400;
  77. oo_hasmsgint = $800;
  78. { options for properties }
  79. ppo_indexed = $1;
  80. ppo_defaultproperty = $2;
  81. ppo_stored = $4;
  82. { options for variables }
  83. vo_regable = $1;
  84. vo_is_C_var = $2;
  85. vo_is_external = $4;
  86. vo_is_dll_var = $8;
  87. vo_is_thread_var = $10;
  88. {
  89. $Log$
  90. Revision 1.6 1999-04-28 06:02:10 florian
  91. * changes of Bruessel:
  92. + message handler can now take an explicit self
  93. * typinfo fixed: sometimes the type names weren't written
  94. * the type checking for pointer comparisations and subtraction
  95. and are now more strict (was also buggy)
  96. * small bug fix to link.pas to support compiling on another
  97. drive
  98. * probable bug in popt386 fixed: call/jmp => push/jmp
  99. transformation didn't count correctly the jmp references
  100. + threadvar support
  101. * warning if ln/sqrt gets an invalid constant argument
  102. Revision 1.5 1999/04/26 13:31:46 peter
  103. * release storenumber,double_checksum
  104. Revision 1.4 1999/04/16 10:28:26 pierre
  105. + added posavestdregs used for cdecl AND stdcall functions
  106. (saves ESI EDI and EBX for i386)
  107. Revision 1.3 1999/03/05 01:14:23 pierre
  108. * bug0198 : call conventions for methods
  109. not yet implemented is the control of same calling convention
  110. for virtual and child's virtual
  111. * msgstr and msgint only created if message was found
  112. who implemented this by the way ?
  113. it leaks lots of plabels !!!! (check with heaptrc !)
  114. Revision 1.2 1999/02/22 20:13:37 florian
  115. + first implementation of message keyword
  116. Revision 1.1 1999/01/12 14:32:49 peter
  117. * splitted from symtable.pas
  118. }