Commit Graph

241 Commits

Author SHA1 Message Date
nickysn
4953fd0bb0 * use CodePointer in Classes.TReader.FindMethod() and TFindMethodEvent for i8086 medium memory model compatibility
git-svn-id: trunk@25153 -
2013-07-20 22:10:22 +00:00
michael
4afefd6cbe * Added AddText as suggested in bug ID #24764
git-svn-id: trunk@25129 -
2013-07-19 07:16:06 +00:00
marco
eebfeca41d * removed all ver2_* defines older than 2_4. 2_4 can probably also get removed from trunk, but better in a separate commit.
git-svn-id: trunk@24971 -
2013-06-25 12:46:30 +00:00
paul
5a6b6d2c4d rtl: fix loading of long integer values to float properties
git-svn-id: trunk@24947 -
2013-06-23 11:18:25 +00:00
nickysn
730f7c82b7 * some fixes, intended to get units fgl and classes to compile on 16-bit cpus
git-svn-id: trunk@24649 -
2013-05-30 18:58:25 +00:00
marco
912d8f1c52 * set namevalueseparator to =, mantis #24116
git-svn-id: trunk@24451 -
2013-05-05 14:04:15 +00:00
svenbarth
930b76e8fb Fix compilation of WinCE. Change the fixed UNICODE define of WinCE to FPC_OS_UNICODE, so that it won't be undefined when changing the mode/string type and that the usage of a UNICODE API is independant of the mode.
Also adjusted all Windows (Win32/64/CE) units to define a "UNICODE" if "FPC_OS_UNICODE" is defined (except the Jedi units).
Also the common RTL units that checked for UNICODE now check for FPC_OS_UNICODE.

git-svn-id: trunk@24420 -
2013-05-04 11:06:32 +00:00
svenbarth
bd7cc36ea6 The documentation says that a "BeginThread" needs to be followed by a "CloseThread". The implementation of TThread did not respect this yet.
Note: The only RTL where this could lead to problems is for BeOS with the old threading implementation as this does not use "BeginThread" at all (the newer implementation does).

rtl/objpas/classes/classes.inc, TThread.Destroy:
  * call "CloseThread" if the thread handle is valid (mimics the logic of the Windows RTL)
rtl/win/tthread.inc, TThread.SysDestroy:
  * remove the call to "CloseHandle"; this is done by "CloseThread" afterwards

git-svn-id: trunk@24313 -
2013-04-23 20:13:07 +00:00
marco
4d9f1629d9 * removed a workaround for pre 2.6.0 fpdocs
git-svn-id: trunk@24294 -
2013-04-21 21:33:10 +00:00
michael
37ba6f9b27 * Fixed 23805
git-svn-id: trunk@23899 -
2013-03-17 17:00:39 +00:00
svenbarth
da7b24e242 Avoid multiple threadvar lookups when querying the current TThread. Inspired by Michael Schnell.
rtl/objpas/classes/classes.inc, TThread.GetCurrentThread:
	* instead of checking CurrentThreadVar and reading it again afterwards we read it first into Result and check this value; this way we have one read access in the normal case and one read and one write access in the worst case

git-svn-id: trunk@23706 -
2013-03-07 20:15:32 +00:00
florian
b00ff8a4e0 * patch by Bart Broersma, simplify TStringList.InsertItem, resolves #23860
git-svn-id: trunk@23638 -
2013-02-20 21:36:02 +00:00
michael
f4c2ba9eb6 * Make sure that current method is removed from stack prior to executing it (bug ID #23629)
git-svn-id: trunk@23362 -
2013-01-11 08:42:40 +00:00
svenbarth
70a7a09413 * use the correct thread ID when checking for the main thread
* ensure that the Exception reference is Nil when appending a synchronize entry to the synchronize queue

git-svn-id: trunk@23234 -
2012-12-27 23:36:16 +00:00
svenbarth
764f36a179 Extend TThread with (class) methods and (class) properties from Delphi 2007 and newer.
Especially for the introduction of the Queue method the internal Synchronize handling was modified. Instead of handling only one event there is now a queue of events which is walked completely when CheckSynchronize is called. Each entry in the queue can carry a PRTLEvent which will be signaled when the contained method has been executed and thus Synchronize methods can still be blocking.
Exceptions inside the queued methods are either handed back to the calling method for Synchronize events or raised directly (after leaving the queue in a valid state) to the caller of CheckSynchronize.

The way platform specific adjustments can be made to TThread was changed. Instead of implementing the Constructor and Destructor directly one now implements the methods SysCreate and SysDestroy which are called from the Constructor and Destructor respectively. All RTLs were adjusted for this and should be controlled by the platform maintainers for correct compilation (Unix works).

The new method NameThreadForDebugging has two overloaded variants: one with the thread name as AnsiString and one with the thread name as UnicodeString.
By default the AnsiString variant calls the UnicodeString variant and the latter needs to be implemented. This can be changed by defining THREADNAME_IS_ANSISTRING for a platform. Then the UnicodeString variant calls the AnsiString one and the AnsiString one needs to be implemented.

Also added was a global property CPUCount for the System unit. This property returns the number of virtual cores of the system.

New methods and functions that should be implemented per platform are:
System.GetCPUCount (default returns 1)
Classes.TThread.GetSystemTimes (default zeros the struct)
Classes.TThread.NameThreadForDebugging (default does nothing)

More detailed information about the added methods will be available in the feature announcement mail.

git-svn-id: trunk@23227 -
2012-12-27 16:16:17 +00:00
michael
11a531ab62 * Fixed bug #23477
git-svn-id: trunk@23135 -
2012-12-12 15:21:28 +00:00
michael
66553a253e * Applied and expanded patch from Luiz Americo to implement faster notifyobservers (bug ID 23419)
git-svn-id: trunk@23089 -
2012-12-02 11:14:49 +00:00
michael
e3b48d6eb2 * Simplified observer/observed GUIDs, patch from Luiz Americo (Bug ID 23420)
git-svn-id: trunk@23088 -
2012-12-02 11:09:51 +00:00
michael
217679843e * IFPObserver methods made public
git-svn-id: trunk@23080 -
2012-11-29 13:28:11 +00:00
michael
b774bbb681 * Use sender when notifying observers
git-svn-id: trunk@23079 -
2012-11-29 13:22:51 +00:00
michael
4ecfde31e1 * Prevent Move from freeing an associated object if OwnsObjects=True (reported on sourceforge)
git-svn-id: trunk@22992 -
2012-11-16 11:04:44 +00:00
michael
a3f7a7fdb4 * Avoid overflow when reading from streams > 2gb
git-svn-id: trunk@22945 -
2012-11-06 23:41:49 +00:00
florian
39aef35bdc * pass not only exception address but also frame to raise:
if an address is passed the compiler cannot know a good 
  value for the frame so it passed nil and no stack trace is printed, resolves #12528

git-svn-id: trunk@22932 -
2012-11-04 20:40:21 +00:00
michael
6eade12d3f * Take care of Florian's remark that FList may be nil when constructor failed
git-svn-id: trunk@22593 -
2012-10-08 15:11:10 +00:00
michael
3cafdc2a58 * Fix from Luiz Americo to avoid crash when a freenotification is registered during destroy. (bug ID 23031)
git-svn-id: trunk@22589 -
2012-10-08 12:02:11 +00:00
michael
61fecf4562 * Patch from Luiz Americo to clean up tlist (bug ID 23024)
git-svn-id: trunk@22585 -
2012-10-08 11:01:39 +00:00
marco
5d42d3a53c * change make TBinaryObjectWriter.WriteStr public mantis #22973
Delphi seems to use .writestr also for shortstring only, so the 
   function is the same.

git-svn-id: trunk@22556 -
2012-10-06 10:06:55 +00:00
marco
a48aba60fb * fix for Delphi incompatible DelimitedText, Mantis #19610, big patch from Reinier Olislagers.
git-svn-id: trunk@22549 -
2012-10-05 16:56:09 +00:00
Jonas Maebe
b4971c72d3 * partial fix for mantis #22912 (waiting on clarification from Unicode
consortium for the character.pas unit)

git-svn-id: trunk@22494 -
2012-09-28 07:57:45 +00:00
Jonas Maebe
404e1a34a4 * changed resource handle parameters from THandle to TFPResourceHMODULE so
they don't truncate the handle data on 64 bit platforms (patch by
    Anton Kavalenka, mantis #21721)

git-svn-id: trunk@22392 -
2012-09-14 15:05:08 +00:00
michael
441e059f32 * Changed ooChanged to ooChange, to be more consistent with tense in other values
git-svn-id: trunk@22262 -
2012-08-28 12:32:15 +00:00
michael
8d9f8e19c3 * remove use of ooCustom to avoid polluting custom use
git-svn-id: trunk@22261 -
2012-08-28 12:30:06 +00:00
michael
445ec2672a * TCollection.Exchange also needs to notify
git-svn-id: trunk@22258 -
2012-08-27 19:35:54 +00:00
michael
43be53351e * Added observer support
git-svn-id: trunk@22257 -
2012-08-27 19:28:14 +00:00
marco
666fecb6df * workaround for unsupported construct in fpdoc. (enum declared nested in class)
git-svn-id: trunk@21999 -
2012-08-02 13:01:27 +00:00
michael
032528115f * Patch from Mattias Gaertner to improve quicksort memory use (Bug 22119)
git-svn-id: trunk@21386 -
2012-05-24 19:18:44 +00:00
michael
0aa0d3f584 * Applied cleanup patch from Luiz Americo (Bug 21771)
git-svn-id: trunk@20867 -
2012-04-14 14:52:33 +00:00
michael
1eca76dec5 * No change when clearing empty collection
git-svn-id: trunk@20780 -
2012-04-10 08:04:34 +00:00
michael
d3fa1b4979 * Fix for bug #21691
git-svn-id: trunk@20779 -
2012-04-10 07:49:40 +00:00
michael
ab0a7d096c * Overloaded AddStrings
git-svn-id: trunk@20691 -
2012-04-02 11:22:02 +00:00
marco
05999225a3 * Patch for referenceinterface by C. Peterson to properly add to the freenotification list, Mantis #20808
git-svn-id: trunk@20616 -
2012-03-24 17:28:10 +00:00
florian
a7fe7b5d06 * patch by cobines to improve speed of TFPList.Move, resolves #21436
git-svn-id: trunk@20606 -
2012-03-23 20:16:03 +00:00
michael
0d545c68de * Call getOwner only once in several TPersistent methods (Patch from Luiz Americo, bug #21531)
git-svn-id: trunk@20574 -
2012-03-22 14:49:43 +00:00
michael
d1b209025f * Applied patch from Luiz Amerigo to have Delphi compatible behaviour when freeing a stringlist (bug 21529)
git-svn-id: trunk@20570 -
2012-03-22 12:10:06 +00:00
marco
b956e9e52d * add a check to TRecall.store for FStorage=nil. Patch by Luiz, Mantis #21404
git-svn-id: trunk@20462 -
2012-03-02 09:43:12 +00:00
marco
39bc3b9dcf * remove empty override tpersist.destroy(), patch by Luiz Americo, Mantis #21387
git-svn-id: trunk@20460 -
2012-03-01 21:47:32 +00:00
sergei
4b5c8bcac2 * Access VMT members using TVmt record instead of pointer manipulations.
* Check FieldTable<>nil before dereferencing. It should be nil if class doesn't have published fields, but currently compiler always generates field table. This produces redundant data and isn't Delphi compatible, therefore it's subject to fix.
* Use ClassNameIs to check the class name instead of doing case-insensitive comparing manually.

git-svn-id: trunk@20305 -
2012-02-11 10:16:50 +00:00
michael
723482c814 * Correctly free objects when destroying stringlist instance
git-svn-id: trunk@20265 -
2012-02-05 19:55:21 +00:00
michael
9fc66414b5 * Avoid code duplication in TFileStream.Create
git-svn-id: trunk@19628 -
2011-11-11 17:32:17 +00:00
florian
cd2488d177 * fix compilation on 64 Bit targets
git-svn-id: trunk@19393 -
2011-10-06 17:54:44 +00:00