Commit Graph

71 Commits

Author SHA1 Message Date
michael
aac74f4d0a * Patch from Inoussa Ouedraogo to make assigning widechar to variant Delphi 2009+ compatible (Bug ID 25719)
git-svn-id: trunk@26873 -
2014-02-25 08:53:03 +00:00
sergei
f42c1b3720 * Return dynamic arrays in parameter, this was the only managed type still returned in register. Returning managed types in registers requires catching and re-raising exceptions at callee side in order to finalize result and avoid memory leaks. While such behavior makes little difference with generic setjmp-based exception handling, it becomes very inefficient as SEH-styled exception handling is being introduced.
The new behavior is also Delphi-compatible.

git-svn-id: trunk@26180 -
2013-12-04 13:43:22 +00:00
sergei
cf20bbc886 * RTL, Pos() with Variant: added 'const' modifiers to avoid unnecessary local copies of managed parameters.
git-svn-id: trunk@25479 -
2013-09-13 11:21:55 +00:00
Jonas Maebe
7a0ae38700 + also specify the parameter def when allocating a parameter via
getintparaloc + adapted all call sites of getintparaloc. This
    led to a number of additional, related changes:
   o corrected the type information for some getintparaloc parameters
   o don't allocate some intparalocs in cases they aren't used
   o changed "const tvardata" parameter into "constref tvardata" for
     fpc_variant_copy_overwrite to make pass-by-reference semantics
     explicit
   o moved a number of routines that now have to call find_system_type()
     from cgobj to hlcgobj so that cgobj doesn't have to start depending
     on the symtable unit
   o added versions of the cpureg alloc/dealloc methods to hlcgobj that
     call through to their cgobj counter parts, so we can call save/restore
     the cpu registers before/after calling system helpers from hlcgobj
     (not implemented in hlcgobj itself, because all basic register
      allocator functionality is still part of cgobj/cgcpu)

git-svn-id: trunk@21696 -
2012-06-24 15:02:12 +00:00
sergei
49700e675c * Changed code generation for variant assignments to typecast arguments to TVarData instead of using pointers. Fixes one (probably the ugliest one) case of non-disposed temp variables:
When arguments are temps, they are supposed to be released by tcgcallnode.release_para_temps. However, taking address with taddrnode effectively changes original location of temp to some LOC_REGISTER, tcgcallnode.release_para_temps no longer sees the original location and therefore does not free such temps.

git-svn-id: trunk@19959 -
2012-01-03 19:31:58 +00:00
sergei
f4023ef49e - Removed outdated VER2_0 defines
git-svn-id: trunk@19513 -
2011-10-19 11:39:59 +00:00
sergei
6e23565edf + Initialize/finalize variants using dedicated helpers, produces both smaller (no RTTI loading necessary) and faster (direct path taken) code.
git-svn-id: trunk@19442 -
2011-10-09 20:34:58 +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
95431c57f5 * fixed variantarrays for 64 bit systems after the changes in 2.2.0 to
turn variantarray indices into longints
  * extended tw9161 to also test storing and retrieving dynamic arrays
    in/from variant arrays

git-svn-id: trunk@12713 -
2009-02-08 00:24:03 +00:00
florian
b178b08ba7 Merged revisions 11665-11738 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/unicodestring

........
  r11665 | florian | 2008-08-30 13:30:17 +0200 (Sat, 30 Aug 2008) | 1 line
  
  * continued to work on unicodestring type support
........
  r11666 | florian | 2008-08-30 19:02:26 +0200 (Sat, 30 Aug 2008) | 2 lines
  
  * expectloc for wide/ansi/unicode strings is LOC_CONSTANT or LOC_REGISTER now
........
  r11667 | florian | 2008-08-30 20:42:37 +0200 (Sat, 30 Aug 2008) | 1 line
  
  * more unicodestring stuff fixed, test results on win32 are already good
........
  r11670 | florian | 2008-08-30 23:21:48 +0200 (Sat, 30 Aug 2008) | 2 lines
  
  * first fixes for unix bootstrapping
........
  r11683 | ivost | 2008-09-01 12:46:39 +0200 (Mon, 01 Sep 2008) | 2 lines
  
      * fixed 64bit bug in iconvenc.pas
........
  r11689 | florian | 2008-09-01 23:12:34 +0200 (Mon, 01 Sep 2008) | 1 line
  
  * fixed several errors when building on unix
........
  r11694 | florian | 2008-09-03 20:32:43 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * fixed unix compilation
........
  r11695 | florian | 2008-09-03 21:01:04 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * bootstrapping fix
........
  r11696 | florian | 2008-09-03 21:07:18 +0200 (Wed, 03 Sep 2008) | 1 line
  
  * more bootstrapping fixed
........
  r11698 | florian | 2008-09-03 22:47:54 +0200 (Wed, 03 Sep 2008) | 1 line
  
  + two missing compiler procs exported
........
  r11701 | florian | 2008-09-04 16:42:34 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  + lazarus project for the linux rtl
........
  r11702 | florian | 2008-09-04 16:43:27 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  + set unicode string procedures
........
  r11707 | florian | 2008-09-04 23:23:02 +0200 (Thu, 04 Sep 2008) | 2 lines
  
  * fixed several type casting stuff
........
  r11712 | florian | 2008-09-05 22:46:03 +0200 (Fri, 05 Sep 2008) | 1 line
  
  * fixed unicodestring compilation on windows after recent unix changes
........
  r11713 | florian | 2008-09-05 23:35:12 +0200 (Fri, 05 Sep 2008) | 1 line
  
  + UnicodeString support for Variants
........
  r11715 | florian | 2008-09-06 20:59:54 +0200 (Sat, 06 Sep 2008) | 1 line
  
  * patch by Martin Schreiber for UnicodeString streaming
........
  r11716 | florian | 2008-09-06 22:22:55 +0200 (Sat, 06 Sep 2008) | 2 lines
  
  * fixed test
........
  r11717 | florian | 2008-09-07 10:25:51 +0200 (Sun, 07 Sep 2008) | 1 line
  
  * fixed typo when converting tunicodestring to punicodechar
........
  r11718 | florian | 2008-09-07 11:29:52 +0200 (Sun, 07 Sep 2008) | 3 lines
  
  * fixed writing of UnicodeString properties
  * moved some helper routines to unicode headers
........
  r11734 | florian | 2008-09-09 22:38:55 +0200 (Tue, 09 Sep 2008) | 1 line
  
  * fixed bootstrapping
........
  r11735 | florian | 2008-09-10 11:25:28 +0200 (Wed, 10 Sep 2008) | 2 lines
  
  * first fixes for persisten unicodestrings
........
  r11736 | florian | 2008-09-10 14:31:00 +0200 (Wed, 10 Sep 2008) | 3 lines
  
  Initialized merge tracking via "svnmerge" with revisions "1-11663" from 
  http://svn.freepascal.org/svn/fpc/trunk
........
  r11737 | florian | 2008-09-10 21:06:57 +0200 (Wed, 10 Sep 2008) | 3 lines
  
  * fixed unicodestring <-> variant handling
  * fixed unicodestring property reading
........

git-svn-id: trunk@11739 -
2008-09-10 20:14:31 +00:00
micha
83b7f81f81 + add no-fpu support to compiler/rtl for powerpc-linux (-Cfnone)
git-svn-id: trunk@10422 -
2008-03-02 12:59:02 +00:00
yury
5e3462b6fc * Fixed warnings and notes.
git-svn-id: trunk@9508 -
2007-12-21 23:28:36 +00:00
florian
dc2a8787a1 + VarArrayPut and VarArrayGet from Igor, resolves #9161
git-svn-id: trunk@8117 -
2007-07-21 18:49:10 +00:00
Jonas Maebe
5bf9c58e14 * fixed real:=variant for non-x86
git-svn-id: trunk@6847 -
2007-03-14 17:04:15 +00:00
marco
0d070eef7f * Patch from Thorsten for bug in lower than equal( only did lower than)
git-svn-id: trunk@6423 -
2007-02-11 14:38:29 +00:00
florian
2167655902 * patch from Thorsten Engler submitted in #8235
git-svn-id: trunk@6272 -
2007-01-30 19:53:42 +00:00
florian
28d59bbf6f * pos(...,...) overloads with variants, see tb0520.pp for the reason
git-svn-id: trunk@5770 -
2006-12-31 17:47:05 +00:00
Jonas Maebe
c839d560ab * store widechar as integer rather than as widestring in variants
(Delphi-compatible)

git-svn-id: trunk@5731 -
2006-12-28 16:17:57 +00:00
yury
63a162ac83 * fixed tw4700.
git-svn-id: trunk@5388 -
2006-11-15 07:17:41 +00:00
yury
cc2b691c0c * Cleanup of variant manager stub in System unit. FPC 2.1.1 adds Variants unit implicitly. Variant manager stub in System unit is never called. This cleanup shrinks wince executable size by 3KB.
git-svn-id: trunk@5307 -
2006-11-10 14:41:45 +00:00
florian
60b1d1e162 * fpc_dispinvoke_variant is a compilerproc
git-svn-id: trunk@5256 -
2006-11-05 21:39:32 +00:00
florian
a13d358f1e * first partially working implementation of variant com invoking
git-svn-id: trunk@5247 -
2006-11-05 15:34:15 +00:00
florian
c947295cb8 + ttertiarynode
* traise node refactored using tertiarynode
* more dipatch stuff

git-svn-id: trunk@5215 -
2006-11-03 23:03:31 +00:00
florian
5c9b39549a * fixed olevariant -> variant conversion
git-svn-id: trunk@5131 -
2006-10-31 19:45:08 +00:00
micha
8678d52aeb * avoid warning when pointer points to size 1 data
* fix variantmanager for {$T+}

git-svn-id: trunk@4861 -
2006-10-11 16:40:40 +00:00
florian
8b841e9514 * fixed another problem caused by yesterdays real change
git-svn-id: trunk@4644 -
2006-09-18 18:21:00 +00:00
michael
5ef20e6215 + Added delphi compatibility Error procedure
git-svn-id: trunk@3610 -
2006-05-21 09:57:47 +00:00
florian
380d3be22c * started to fix var. array -> dyn. array
git-svn-id: trunk@1626 -
2005-11-01 22:41:25 +00:00
florian
c5f82ba6de + (ole)variant<->error type conversion
+ DynArraySetLength
+ DynArrayFromVariant

git-svn-id: trunk@1608 -
2005-10-30 23:12:08 +00:00
florian
700aacf6a3 + forgot to add some helpers, now type cast helpers for olevariants should be complete
git-svn-id: trunk@1169 -
2005-09-23 16:56:36 +00:00
florian
372141e19d + more olevariant type cast wrappers
git-svn-id: trunk@1168 -
2005-09-23 16:36:09 +00:00
florian
eb57d588fd + several olevariant helpers and wrappers implemented
git-svn-id: trunk@1157 -
2005-09-23 09:48:55 +00:00
florian
30769ea013 * made variant operators inlined
* fixed some inline directives
+ variant<->olevariant cast operators

git-svn-id: trunk@632 -
2005-07-15 21:12:21 +00:00
michael
b29507407e + Removed HASOVERLOADASSIGNBYUNIQUERESULT define
git-svn-id: trunk@315 -
2005-06-09 18:08:11 +00:00
peter
4ace790492 * remove $Log
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
florian
9da46ff50a * more descriptive error message in case of a missing variant unit added
* variant unit uses now the math unit for ** implementation

git-svn-id: trunk@158 -
2005-05-30 20:47:34 +00:00
michael
77152e9d1b + Added VarCast routine
git-svn-id: trunk@100 -
2005-05-25 20:25:58 +00:00
florian
937fcdf41e * better message in case of missing variants unit
git-svn-id: trunk@69 -
2005-05-22 12:41:36 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
florian
db865d1e51 + variant<->currency/tdatetime operators 2005-04-28 19:34:19 +00:00
florian
89da61f7a8 + basic operators (int, real and string) for variants implemented 2005-04-10 20:24:31 +00:00
florian
9a463a8bc3 + varrarrayredim added and implemented 2005-04-10 09:22:38 +00:00
florian
372711eea4 + a lot of vararray stuff 2005-03-28 13:38:05 +00:00
florian
e59c1f74a2 + more vararray stuff 2005-03-25 19:02:59 +00:00
florian
74c89e2b87 + some variant stuff fixed and added 2005-02-24 22:36:36 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
0853821fd1 + interface <-> variant conversion from Danny Milosavljevic 2005-02-01 20:22:24 +00:00
florian
99ebd46010 * several variant init./final. stuff fixed 2005-01-15 18:47:26 +00:00