mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-24 02:19:24 +02:00
![]() o these classes get an "enum" flag in the class files o these classes get a class field (whose type is that same enum class) per enum in the type, which also gets the "enum" flag o those class fields are initialised in the class constructor with the name of the enum and their order in the declaration o if the enum has jumps in FPC (lowest value is not 0, or not all values are contiguous), then we add an extra field to hold the FPC ordinal value of the enum o these classes get a class field valled $VALUES that contains a reference to the aforementioned class fields in order of declaration (= ordinal->instance mapping, JDK-mandated) o apart from the JDK-mandated instance methods (values, valueOf), also add FPCOrdinal (returns FPC ordinal value; same as order of declaration in case of no jumps) instance method and FPCValueOf (returns enum corresponding to FPC ordinal value) static class method o the mapping between FPC ordinals and enum instances in case of jumps is stored in a hashmap whose size is the next prime number greater or equal than the number of enum elements o moved several extra JDK types to the system unit for the enum support, and for future boxing and Java set support o several new synthetic method identifiers to generate the enum class methods/constructor/class constructor o enums with jumps are ordered by FPC ordinal value in the JVM $VALUES array so that the java.lang.Enum.doCompare() method will properly compare them git-svn-id: branches/jvmbackend@18616 - |
||
---|---|---|
.. | ||
amiga | ||
arm | ||
atari | ||
avr | ||
beos | ||
bsd | ||
darwin | ||
embedded | ||
emx | ||
freebsd | ||
gba | ||
go32v2 | ||
haiku | ||
i386 | ||
inc | ||
java | ||
jvm | ||
linux | ||
m68k | ||
macos | ||
mips | ||
mipsel | ||
morphos | ||
nativent | ||
nds | ||
netbsd | ||
netware | ||
netwlibc | ||
objpas | ||
openbsd | ||
os2 | ||
palmos | ||
powerpc | ||
powerpc64 | ||
qnx | ||
solaris | ||
sparc | ||
symbian | ||
ucmaps | ||
unix | ||
watcom | ||
wii | ||
win | ||
win32 | ||
win64 | ||
wince | ||
x86_64 | ||
COPYING.FPC | ||
COPYING.txt | ||
fpmake.inc | ||
fpmake.pp | ||
Makefile | ||
Makefile.fpc | ||
README.txt |
This is the Run-Time Library (RTL) tree for Free Pascal. To recompile the RTL, edit the main makefile. The makefiles NEED a GNU make compatible make, they need unix-like 'rm' and 'mv' commands, as well as some others. You can find these in the gnuutils package on the ftp site. The main makefile is located ABOVE the RTL tree. It uses the FPC makefile.fpc to guess reasonable defaults for everything it needs. (these files can be found in base.zip on the FTP site) The only variable that you may want to set are FPC - What compiler to use. Use an absolute path. (default is ppc386) INSTALL_UNITDIR - Where to install the RTL units OPT - any special options you want to set for the compiler. In principle, you can also descend into the subdirectory of your OS, and type 'make' there, that should also compile everything. The tree contains subdirectories for all the supported operating systems, as well as all processor architectures. The processor directories contain low-level routines which are required for the system unit (if they are not available in high-level language form), as well as optimized versions of the pascal generic routines (the generic routine source code is localed in the inc subdirectory). The following directories are not supported officially and may not work correctly with FreePascal v1.0: go32v1 - The DJGPP go32v1 DOS extender (no longer supported) palmos - The PalmOS directory for the Dragonball (incomplete) Enjoy.