Commit Graph

2165 Commits

Author SHA1 Message Date
marco
030379bc57 * Minor optimization from mantis 14974
git-svn-id: trunk@14016 -
2009-11-03 12:59:12 +00:00
paul
aa5a5e79ce merge revisions: 13909,13923,13924,13934,13935,13942,13943,13944,13946,13948,13950,13951,13952,13983,13994:
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 -
2009-11-02 03:24:48 +00:00
paul
dfef902c53 rtl: introduce new TObject methods: UnitName, GetHashCode, Equals, ToString added for compatibility with delphi 2009.
+ changes in compiler, utils, packages to resolve identifier conflicts with the new TObject methods (like changing of UnitName arguments to AUnitName, adding Classes. before the toString, etc). (issue #0014931)

git-svn-id: trunk@14005 -
2009-11-01 16:22:47 +00:00
ivost
a9150ebb8a * lib handler: default libraries can be changed now
git-svn-id: trunk@13995 -
2009-11-01 11:28:17 +00:00
ivost
3e16584155 * symbols are cleared now after unloading the library (ClearLibrarySymbols)
git-svn-id: trunk@13979 -
2009-10-30 13:42:49 +00:00
ivost
bd25e02096 * added some highlevel helper functions to load/unload dynamic libraries.
* initialize/release calls are refcounted. On loading, requested symbols are checked.

git-svn-id: trunk@13975 -
2009-10-30 13:16:13 +00:00
florian
84c84b4964 + make TObject.Dispatch and DispatchStr virtual, patch by Paul Ishenin, resolves #14920
git-svn-id: trunk@13962 -
2009-10-28 19:22:29 +00:00
michael
893295dc1e * Added Pack/Unpack dummies, fixed var/out and const params in writestr/readstr
git-svn-id: trunk@13880 -
2009-10-17 09:22:49 +00:00
michael
44f14996c5 * Added dummy definitions of readstr/writestr
git-svn-id: trunk@13869 -
2009-10-16 13:41:23 +00:00
Jonas Maebe
93171fdc23 + support for tkUString in get/setpropvalue (mantis #14617)
git-svn-id: trunk@13829 -
2009-10-09 19:47:55 +00:00
Jonas Maebe
be39c47d02 * don't stop at #0 characters for setstring with pchar either
git-svn-id: trunk@13828 -
2009-10-09 19:47:46 +00:00
Jonas Maebe
6a0755e897 * fixed setstring for unicode/widestring: don't stop at embedded #0
characters, don't expect that buffer is null-terminated (mantis #14740)

git-svn-id: trunk@13826 -
2009-10-09 16:12:03 +00:00
florian
515774b864 * merged armthum branch
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
U    rtl/arm/setjump.inc
A    rtl/arm/thumb2.inc
U    rtl/arm/divide.inc
A    rtl/embedded/arm/stm32f103.pp
U    rtl/inc/system.inc
U    compiler/alpha/cgcpu.pas
U    compiler/sparc/cgcpu.pas
U    compiler/i386/cgcpu.pas
U    compiler/ncgld.pas
U    compiler/powerpc/cgcpu.pas
U    compiler/avr/cgcpu.pas
U    compiler/aggas.pas
U    compiler/powerpc64/cgcpu.pas
U    compiler/x86_64/cgcpu.pas
U    compiler/cgobj.pas
U    compiler/psystem.pas
U    compiler/aasmtai.pas
U    compiler/m68k/cgcpu.pas
U    compiler/ncgutil.pas
U    compiler/rautils.pas
U    compiler/arm/raarmgas.pas
U    compiler/arm/armatts.inc
U    compiler/arm/cgcpu.pas
U    compiler/arm/armins.dat
U    compiler/arm/rgcpu.pas
U    compiler/arm/cpubase.pas
U    compiler/arm/agarmgas.pas
U    compiler/arm/cpuinfo.pas
U    compiler/arm/armop.inc
U    compiler/arm/narmadd.pas
U    compiler/arm/aoptcpu.pas
U    compiler/arm/armatt.inc
U    compiler/arm/aasmcpu.pas
U    compiler/systems/t_embed.pas
U    compiler/psub.pas
U    compiler/options.pas

git-svn-id: trunk@13801 -
2009-10-04 09:03:44 +00:00
florian
e8dff46f8e * several small bugs in the handling of implements fixed, resolves #14418
git-svn-id: trunk@13615 -
2009-08-30 08:01:10 +00:00
Jonas Maebe
c2c68ddb8f - removed FPC_NEW_BIGENDIAN_SETS define and if(n)defs
* left old cpu-specific set helper code under ifdef FPC_OLD_BIGENDIAN_SETS
    in case someone wants to write new assembler set helpers (although most
    of them should be optimally generated by the compiler already if
    http://wiki.freepascal.org/FPC_HowToDo#Bit.28field.29_getting.2Fsetting_primitives
    are optimally implemented)

git-svn-id: trunk@13582 -
2009-08-23 08:16:40 +00:00
Jonas Maebe
0eec337a00 - removed SUPPORT_UNALIGNED, FPC_SUPPORTS_UNALIGNED and FPC_UNALIGNED_FIXED
defines and ifdefs (already all defined by 2.2.4)

git-svn-id: trunk@13581 -
2009-08-23 07:51:26 +00:00
Jonas Maebe
a1363e95f7 * no longer perform precision correction for single precision values, because
we support writing more digits than are defined (due to Delphi-
    compatibility) and
   a) correcting the precision of undefined digits makes no sense
   b) as a result, this precision correction made some numbers that can be
      represented exactly in single precision inexact
    -- fixes mantis #14230
  * no longer perform precision correction while determining the whole part
    of numbers (usually did nothing anyway, and the rest is caught by the
    final rounding)

git-svn-id: trunk@13574 -
2009-08-22 07:49:06 +00:00
yury
e82e4ae806 * Fixed WideString on wince. WideString=UnicodeString on wince. Bug #14304.
git-svn-id: trunk@13510 -
2009-08-10 11:32:08 +00:00
marco
2ee5b728ba * disable the 1:1 aliases of the legacy errorhandling.
Leave the more complex functions under deprecated. 
   Also keep the errorhandling for at least another cycle.

git-svn-id: trunk@13498 -
2009-08-08 12:25:59 +00:00
Jonas Maebe
30bfca91a9 * made application of rounding correction more accurate
(does *not* resolve #14230)

git-svn-id: trunk@13494 -
2009-08-06 20:41:43 +00:00
florian
90d71ee7da * SwapEndian(<16 Bit>) needs inline in the interface section as well
git-svn-id: trunk@13454 -
2009-07-26 13:57:51 +00:00
florian
6ff15f46e2 * made SwapEndian(<16 Bit>); inlined
git-svn-id: trunk@13453 -
2009-07-26 13:50:57 +00:00
florian
e362e85039 * fixed last commit: UTF8Encode -> UTF8Decode
git-svn-id: trunk@13452 -
2009-07-26 13:09:31 +00:00
florian
d38340c753 + utf-8 <-> variant type casts, resolves #11371
* ucs-4 -> variant type cast (variant -> ucs-4 is not possible due to overloading contraints of fpc and how ucs-4 is implemented)
* some newlines fixed

git-svn-id: trunk@13451 -
2009-07-26 12:58:49 +00:00
Jonas Maebe
9c280eae26 * fixed range error introduced in r13213
git-svn-id: trunk@13328 -
2009-06-27 11:20:30 +00:00
florian
a5f3cd9b1d * take random feature switch into account
git-svn-id: trunk@13300 -
2009-06-19 15:26:06 +00:00
ivost
02d177c885 * added FillQWord, IndexQWord, but CompareQWord is still missing
git-svn-id: trunk@13282 -
2009-06-15 21:35:52 +00:00
michael
0021183eb6 * Patch from reporter of bug ID #13924 to fix arguments with spaces if no argv is declared.
git-svn-id: trunk@13246 -
2009-06-07 08:53:36 +00:00
michael
6452f5b692 * Some TCustomVariant methods implemented
git-svn-id: trunk@13213 -
2009-05-30 12:07:16 +00:00
Tomas Hajny
2353848004 * extension of r13191 to OS/2, EMX and potential other platforms using crt.inc based implementation of unit crt
git-svn-id: trunk@13207 -
2009-05-27 21:18:35 +00:00
Jonas Maebe
78c29a33ba * changed the parameters of gotoxy() and the return values of wherex/wherey
from byte into tcrtcoord=1..255, since all crt unit coordinates are
    1-based (not for Window() procedure, see comments in crth.inc;
    mantis #13788)

git-svn-id: trunk@13191 -
2009-05-24 11:48:49 +00:00
yury
628b0c23ac * exeinfo: Return executable image base and current module base address on Windows.
* exeinfo: Properly handle long COFF section names. Bug #13499.
* lineinfo, lnfodwrf: Properly use executable image base and current module base address.

git-svn-id: trunk@13145 -
2009-05-15 22:14:09 +00:00
Jonas Maebe
b77bff2996 + cardinal/qword overloads for interlocked* routines (mantis #13281)
git-svn-id: trunk@13127 -
2009-05-10 15:22:38 +00:00
Jonas Maebe
9ed40aa926 - reverted r13079, it gives wrong results when using heaptrc with an
program that does nothing. It was also not logical, because the expected
    free heap at the end is the total heap size minus any allocated blocks
    and minus the memory that was allocated before heaptrc was activated
    (as the old code calculated, and as it does again now -- mantis #13678)

git-svn-id: trunk@13124 -
2009-05-10 09:28:47 +00:00
Jonas Maebe
0597c300f4 * applied feature dependencies patch by Sven Barth from mantis #13673 :
o i386/i386.inc used a function (fpc_truely_ansistr_unique) is now
     only included if FPC_HAS_FEATURE_ANSISTRINGS is enabled (all other
     platforms use the Pascal-only implementations)
   o inc/heap.inc relied on threading
   o inc/threads.inc relied on exceptions, consoleio and stackcheck
   o inc/system.inc: just a feature-related "variable not used"-hint

git-svn-id: trunk@13121 -
2009-05-09 20:08:57 +00:00
micha
c9bea201ce * heaptrace: fix calculation of expected free heap
git-svn-id: trunk@13080 -
2009-05-02 13:48:23 +00:00
Jonas Maebe
dcb1046b98 * moved core logic from fpc_shortstr_enum into a separate function, so
it can be reused in fpc_write_text_enum (currently it duplicates that
    code). I seem to have lost my corresponding changes to text.inc though,
    so removing the duplicate code will be for another time.

git-svn-id: trunk@13076 -
2009-05-02 08:48:48 +00:00
Jonas Maebe
533f533868 * changed destination parameter of getmem/getmemory from "var" to "out"
(mantis #11907)

git-svn-id: trunk@13036 -
2009-04-25 09:57:29 +00:00
Jonas Maebe
f9a17c47bd * write output to screen if log file(s) cannot be opened (mantis #12532)
git-svn-id: trunk@13032 -
2009-04-24 13:28:06 +00:00
ivost
0e9690c31b * added striscan, strriscan and stripos
git-svn-id: trunk@13019 -
2009-04-17 10:08:17 +00:00
ivost
cf544462d8 * fixed typo in comment of strpos
git-svn-id: trunk@13018 -
2009-04-17 09:45:03 +00:00
Jonas Maebe
757abc620a * comparing tdatetime variant values has to happen without an epsilon,
as all bits of the double value encode date/time information
    (mantis #13110)

git-svn-id: trunk@12962 -
2009-03-23 17:00:58 +00:00
Jonas Maebe
b5494c534c * handle EsockEINTR for fpaccept and fpconnect
git-svn-id: trunk@12939 -
2009-03-21 16:11:08 +00:00
Jonas Maebe
d67dbcf030 * fixed UTF8ToUnicode() based on patch by JoshyFun, and also added
support for 4-character UTF-8 codepoints (mantis #11791)
  * fixed UnicodeToUtf8() based on patch by A. J. Miller (mantis
    #13075)

git-svn-id: trunk@12902 -
2009-03-15 15:47:39 +00:00
Jonas Maebe
02bfd45775 * corrected properties
git-svn-id: trunk@12900 -
2009-03-15 15:21:17 +00:00
Jonas Maebe
ab8b32dafb - removed PARAOUTFILE define and ifdefs
git-svn-id: trunk@12898 -
2009-03-15 12:31:02 +00:00
Jonas Maebe
6165536b5e + added {$modeswitch objectivec1}/-Mobjectivec1 mode switch to enable
the use of Objective-C 1.0 constructs. Because it is a mode switch, it
    can be used cumulatively with every syntax mode. Note that a {$mode xxx}
    statement resets all mode switches as well, so you cannot use the
    -Mobjectivec1 variant if you have such a statement in a unit. This
    modeswitch is currently only enabled for Darwin/PowerPC and Darwin/i386,
    as the backend support is not yet implemented for other platforms.
  + implemented selector() statement that can be used to create an Objective-C
    selector for the message with the specified *constant* name (in the future,
    it will also work for Objective-C method identifiers)
  + added SEL type to the system unit (the selector() statement returns it)
  + added all Objective-C segments to the assembler writers
  + (currently mostly dummy) objc1 unit that is automatically included if the
    {$modeswitch objectivec1} statement is used
  + some tests for the selector() statement

git-svn-id: trunk@12870 -
2009-03-08 18:40:32 +00:00
florian
8a940151a7 o patch by Sergej Gorelkin:
* When OpenExeFile is called with an empty filename argument, 
    it apparently opens stdin and crashes immediately thereafter trying to seek in non-seekable stream. 
    The filename is empty whenever GetLineInfo is called with the address that does not belong to valid module.

git-svn-id: trunk@12802 -
2009-02-26 18:34:48 +00:00
micha
82e9d9009d * fix memory leak introduced in rev 9696, orphaned os chunks are not reused for short-lived threads (fixes issue #13173)
git-svn-id: trunk@12759 -
2009-02-20 22:35:41 +00:00
ivost
0438667eed * fixed bug #5800
* const s: string = icorbainterface; is possible now
* as operator is working now with corba interfaces
* supports helper function is working now with corba interfaces

git-svn-id: trunk@12729 -
2009-02-09 00:35:09 +00:00