mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-05 09:47:25 +01:00
rtl: add enumerators to the basic classes tests: add enumerators test which compiles and work both by fpc and dcc compiler: + start for-in loop implementation: implement for-in loop for types (enumerations and ranges), strings, arrays and sets. todo: perform type checking, optimize array and string loops - use temp for expression, implement for-in loop for classes test: + add a simple test for the 'for-in' loop compiler: fix string for-in loop. now it uses a temp variable to store string expression result complier: fix for-in array loop. use a temp variable for the loop expression only if loop is not an open array loop complier: continue enumerator implementation: + add operator enumerator which give an ability to add enumerator for an existent type (for example to override builtin string enumerator) + add class enumerator support via delphi compatible GetEnumerator method + enumerator class/object template (function MoveNext: Boolean; property Current) + tests compiler: fix for-in loop for arrays. delphi does not copy arrays to a temp variable and it is possible to change array during loop. + test compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class compiler: enumerator directive support: + allow to mark methods and properties by 'enumerator MoveNext' and 'enumerator Current' modifiers. Parser checks return types and duplicates. + prefer *marked* by enumerator directive methods and properties than GetEnumerator and Current builtin symbols + increase ppu version + test rtl: add IEnumerator and IEnumerable interfaces declarations tests: for-in loop tests: + add small comment at the top of test program compiler: allow 'enumerator MoveNext' for the interface function declaration + test compiler: move all for-in loop helpers to the nflw unit compiler: don't allow the compiler to choose the non-valid enumerator operator for the for-in loop git-svn-id: trunk@14008 - |
||
|---|---|---|
| .. | ||
| amiga | ||
| arm | ||
| atari | ||
| avr | ||
| beos | ||
| bsd | ||
| darwin | ||
| embedded | ||
| emx | ||
| freebsd | ||
| gba | ||
| go32v2 | ||
| haiku | ||
| i386 | ||
| inc | ||
| linux | ||
| m68k | ||
| macos | ||
| morphos | ||
| nds | ||
| netbsd | ||
| netware | ||
| netwlibc | ||
| objpas | ||
| openbsd | ||
| os2 | ||
| palmos | ||
| powerpc | ||
| powerpc64 | ||
| qnx | ||
| solaris | ||
| sparc | ||
| symbian | ||
| ucmaps | ||
| unix | ||
| watcom | ||
| 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.