florian
10df6ea0a2
* fpc_variant_get call fixed
2005-03-28 14:14:52 +00:00
florian
252fa84c62
+ compiler support for reading/writing of vararrays
2005-03-27 20:19:21 +00:00
peter
3f9d6ab32f
* add hint when passing an uninitialized variable to a var parameter
2005-03-25 22:20:18 +00:00
florian
eeaded577a
* fixed copy(dyn. array,...);
2005-03-05 16:37:28 +00:00
Jonas Maebe
d612918bb2
* fixed Lazarus compilation
2005-03-04 09:56:35 +00:00
Jonas Maebe
39a372756f
* properties can also be inherited/overridden
2005-03-04 07:46:36 +00:00
Jonas Maebe
7fb6b96aed
* fixed web bug #3738
2005-03-03 19:58:14 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
acc34b08cd
* fixed precedence of is-operator
2005-02-06 20:29:12 +00:00
peter
79c20ebf7d
* use val() for decoding integers
2005-01-20 17:05:53 +00:00
peter
537dcdde20
* don't allow properties in C style operators
2005-01-04 16:38:07 +00:00
peter
ced6bf20cd
* fix lineinfo for with blocks
2004-12-26 16:22:01 +00:00
peter
9c0be16488
implicit load of variants unit
2004-12-06 19:23:05 +00:00
peter
2b6456fe16
* procvar handling for tp procvar mode fixed
...
* proc to procvar moved from addrnode to typeconvnode
* inlininginfo is now allocated only for inline routines that
can be inlined, introduced a new flag po_has_inlining_info
2004-12-05 12:28:10 +00:00
peter
89b1b583c9
* ttempcreatenode.create_reg merged into .create with parameter
...
whether a register is allowed
* funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +00:00
peter
14d25d278b
mangledname setting moved to place after the complete proc declaration is read
...
import generation moved to place where body is also parsed (still gives problems with win32)
2004-11-17 22:21:35 +00:00
peter
e740a66636
* tparaitem removed, use tparavarsym instead
...
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
peter
d804452dcc
added checking for token=_ID after _POINT is parsed
2004-11-04 17:57:58 +00:00
peter
f02ebed09e
* support @labelsym
2004-11-01 15:32:12 +00:00
peter
916041c81c
* symlist typeconv for absolute fixed
2004-11-01 10:33:01 +00:00
peter
e7459f5466
* heap and heapsize removed
...
* checkpointer fixes
2004-10-25 15:38:41 +00:00
mazen
581b52422c
- remove $IFDEF DELPHI and related code
...
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
1bb51a2667
* all checking for visibility is now done by is_visible_for_object
2004-10-12 19:51:13 +00:00
peter
4a7e02d817
* cstyle operators with calln in the tree now use a temp
2004-10-12 14:35:47 +00:00
peter
2c9a986fa3
* fix crash with calling method pointer from class procedure
2004-08-25 15:58:36 +00:00
olle
98df0978e1
+ adding operators "|" and "&" for macpas
2004-07-05 23:25:34 +00:00
olle
ff36adb056
+ macpas style: exit, cycle, leave
...
+ macpas compiler directive: PUSH POP
2004-07-05 21:49:43 +00:00
peter
2769c9048c
* don't allow assigned(tobject) anymore, it is useless since it
...
is always true
2004-06-29 20:59:43 +00:00
michael
41655fe0ac
+ Patch from peter to fix typinfo for classes
2004-06-28 14:38:36 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
b86f2c6a25
* methodpointer is loaded into a temp when it was a calln
2004-05-23 18:28:40 +00:00
florian
aa64bb4c2c
+ support for assigned(<dyn. array>) added
2004-05-16 15:03:48 +00:00
daniel
b721e5872c
* Prepare compiler infrastructure for multiple ansistring types
2004-04-29 19:56:36 +00:00
florian
e678705648
* small x86_64 fixes
2004-04-12 18:59:32 +00:00
peter
8d078ada18
* variant array support
2004-03-29 14:42:52 +00:00
peter
e46cdcea48
* constants ordinals now always have a type assigned
...
* integer constants have the smallest type, unsigned prefered over
signed
2004-03-23 22:34:49 +00:00
peter
c844c5a505
* procvar cleanup
2004-02-20 21:55:59 +00:00
peter
6faddb5e71
* constants are now parsed as 64bit for cpu64bit
2004-02-18 21:58:53 +00:00
daniel
b38d7f59f4
* Make better use of try_to_consume
2004-02-17 23:36:40 +00:00
peter
1e3875ad36
- fix rtti generation for properties containing sl_vec
...
- fix crash when overloaded operator is not available
- fix record alignment for C style variant records
2004-02-17 15:57:49 +00:00
peter
ecfbbeffc3
* renamed xNNbittype to xNNinttype
...
* renamed registers32 to registersint
* replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
Jonas Maebe
b46b7ff792
* integrated hack from 1.0.x so we can parse low(int64) as int64 instead
...
of as double (in 1.0.x, it was necessary for low(longint))
2003-12-29 17:19:35 +00:00
peter
1260eed8fd
* again procvar fixes
2003-12-08 22:35:28 +00:00
peter
90a0c832e4
* Initialize() added
2003-11-29 16:19:54 +00:00
peter
2d08c072b5
* fix crash with exit() in a procedure
2003-11-29 14:49:46 +00:00
peter
353219a928
* typed address only used for @ and addr() that are parsed
2003-11-29 14:33:13 +00:00
peter
76f5fbd7db
* check paralength instead of assigned(left)
2003-11-10 19:11:39 +00:00
florian
bbf7300a0c
* Florian's culmutative nr. 1; contains:
...
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
2003-11-07 15:58:32 +00:00
peter
25bf6452b4
* fixed calling classmethod for other object from classmethod
2003-11-06 15:54:32 +00:00
peter
1688a42f0d
* assigned(proc()) does not change the calln to loadn
2003-11-04 16:42:13 +00:00
peter
079e489b08
* absolute to object field supported, fixes tb0458
2003-10-28 15:36:01 +00:00
peter
56ebcd1249
* self is not a token anymore. It is handled special when found
...
in a code block and when parsing an method
2003-10-09 15:20:56 +00:00
florian
8fcfcc6606
* fixed constructor call in class methods
2003-10-09 15:00:13 +00:00
peter
95f132db3d
* set_varstate cleanup
2003-10-08 19:19:45 +00:00
peter
cedb10116c
* fix assigned(property)
2003-10-05 12:56:04 +00:00
peter
00801693bb
* protected visibility fixes
2003-10-02 21:13:46 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
florian
f3e9e7a24f
* fixed web bug #2669
...
* cosmetic fix in printnode
* tobjectdef.gettypename implemented
2003-09-06 22:27:08 +00:00
florian
22f1ff8da4
* merged Wiktor's Watcom patches in 1.1
2003-09-05 17:41:12 +00:00
peter
cb16846e3b
* fixed static class check for properties
2003-08-23 22:29:51 +00:00
peter
17d7fb5a03
* allow typeof(self) in class methods
2003-08-23 18:41:52 +00:00
peter
6731abb0db
* fixed some reported bugs
2003-08-10 17:25:23 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
peter
dc64b1b54f
* don't set nf_member when loaded from with symtable
...
* allow static variables in class methods
2003-06-03 21:02:57 +00:00
peter
31286d02e6
* search defaulthandler only for message methods
2003-05-22 17:43:21 +00:00
peter
92ee1804b6
* removed selfpointer_offset, vmtpointer_offset
...
* tvarsym.adjusted_address
* address in localsymtable is now in the real direction
* removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
fcea95f596
* ifdef'd code that checked for failed inherited constructors
2003-05-13 20:54:39 +00:00
peter
05c05f2555
* failn removed
...
* inherited result code check moven to pexpr
2003-05-13 19:14:41 +00:00
peter
26d78ff5c9
* moved implicit exception frame from ncgutil to psub
...
* constructor/destructor helpers moved from cobj/ncgutil to psub
2003-05-11 21:37:03 +00:00
peter
15b0132f6f
* tloadnode does not support objectsymtable,withsymtable anymore
...
* withnode cleanup
* direct with rewritten to use temprefnode
2003-05-11 14:45:12 +00:00
peter
1a2eedd767
* self moved to hidden parameter
...
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
florian
9612e57805
* introduced defaultordconsttype to decribe the default size of ordinal constants
...
on 64 bit CPUs it's equal to cs64bitdef while on 32 bit CPUs it's equal to s32bitdef
+ added defines CPU32 and CPU64 for 32 bit and 64 bit CPUs
* int64s/qwords are allowed as for loop counter on 64 bit CPUs
2003-05-01 07:59:42 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66
* aktprocdef cleanup, aktprocdef is now always nil when parsing
...
a new procdef declaration
* aktprocsym removed
* lexlevel removed, use symtable.symtablelevel instead
* implicit init/final code uses the normal genentry/genexit
* funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
peter
fe96aad6d6
* vo_is_result flag added for the special RESULT symbol
2003-04-26 00:33:07 +00:00
peter
f4b818fc1d
* removed funcretn,funcretsym, function result is now in varsym
...
and aliases for result and function name are added using absolutesym
* vs_hidden parameter for funcret passed in parameter
* vs_hidden fixes
* writenode changed to printnode and released from extdebug
* -vp option added to generate a tree.log with the nodetree
* nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
peter
181da6423d
* firstaddr will check procvardef
2003-04-23 10:13:55 +00:00
peter
47489f2376
* firstpass uses expectloc
...
* checks if there are differences between the expectloc and
location.loc from secondpass in EXTDEBUG
2003-04-22 23:50:22 +00:00
peter
d780263799
* default property also increased the reference count for the
...
property symbol
2003-04-11 15:49:01 +00:00
peter
5cff10dd1a
* fix tw2454
2003-04-11 14:50:08 +00:00
peter
750c3b315e
* fixed small mem leaks
2003-03-27 17:44:13 +00:00
peter
fe6518a49c
* allow more tokens instead of only semicolon after inherited
2003-03-17 18:55:30 +00:00
peter
830ea4e876
* support DefaultHandler and anonymous inheritance fixed
...
for message methods
2003-03-17 16:54:41 +00:00
peter
25d973ef16
* self fixes for static methods (merged)
2003-01-30 21:46:57 +00:00
peter
14f92fa36f
* Find the correct procvar to load when using @ in fpc mode
2003-01-16 22:12:22 +00:00
peter
00e2ee165b
* merged methodpointer fixes from 1.0.x
2003-01-15 01:44:32 +00:00
peter
ea989e01cc
* fixed tw2273
2003-01-14 23:48:09 +00:00
peter
23861a4e45
* tp procvar handling fix for tb0448
2003-01-12 17:51:42 +00:00
peter
a0fbe08d83
* remove a lot of code to support typen in loadn-procsym
2003-01-05 22:44:14 +00:00
peter
74cd4c01b2
* assigned(procvar) fix for delphi mode, fixes tb0430
2002-12-11 22:40:36 +00:00
carl
93d011d184
+ checking for symbols used with hint directives is done mostly in pexpr
...
only now
2002-11-30 11:12:48 +00:00
peter
67153fd9a1
* the never ending story of tp procvar hacks
2002-11-27 15:33:46 +00:00
peter
2e692659df
* fix for tw2178. When a ^ or . follows a procsym then the procsym
...
needs to be called
2002-11-26 22:58:24 +00:00
peter
f3fc72095f
* splitted defbase in defutil,symutil,defcmp
...
* merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
carl
05d86bbef8
* memory optimization with tconstsym (1.5%)
2002-11-22 22:48:10 +00:00
pierre
01af531efb
* commented check code tht was invalid in 1.1
2002-11-20 22:49:55 +00:00
peter
bc7a7ddb20
* fix crash with EXTDEBUG code
2002-11-18 18:34:41 +00:00
peter
aee4b7195a
* fix tw2209 (merged)
2002-11-18 17:48:21 +00:00
peter
a496dbe1ff
* pass proccalloption to ret_in_xxx and push_xxx functions
2002-11-18 17:31:54 +00:00
peter
9d0437f8aa
* support inherited; support for overload as it is handled by
...
delphi. This is only for delphi mode as it is working is
undocumented and hard to predict what is done
2002-10-05 00:48:57 +00:00
peter
f29c79b533
* ignore vecn,subscriptn when checking for a procvar loadn
2002-10-04 21:13:59 +00:00
peter
ff5f5b33cd
* don't check interfaces for class methods
2002-10-02 20:51:22 +00:00
peter
d774c8d988
* Copy() is now internal syssym that calls compilerprocs
2002-10-02 18:20:52 +00:00
florian
d5f0cbbf2b
* fixes to common code to get the alpha compiler compiled applied
2002-09-30 07:00:44 +00:00
peter
76eb5b4a1f
* allow ^ after nil
2002-09-16 19:06:14 +00:00
peter
dcd9e0107c
* old logs removed and tabs fixed
2002-09-07 15:25:00 +00:00
carl
6c2bede5a8
* second part bug report 1996 fix, testrange in cordconstnode
...
only called if option is set (also make parsing a tiny faster)
2002-09-07 12:16:03 +00:00
daniel
b0364566d1
* Make Tprocdef.defs protected
2002-09-03 16:26:26 +00:00
peter
98dd65b0f3
* inlining is now also allowed in interface
...
* renamed write/load to ppuwrite/ppuload
* tnode storing in ppu
* nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
florian
e313bab4ff
* first part of procinfo rewrite
2002-08-17 09:23:33 +00:00
Jonas Maebe
ad728f0267
- removed some superfluous "in_paras := true" statements
2002-08-01 16:37:47 +00:00
florian
eb2ca8d10f
* rewrote the system handling
2002-07-26 21:15:37 +00:00
daniel
46b8ed0657
* Tried to make Tprocsym.defs protected. I didn't succeed but the cleanups
...
are worth comitting.
2002-07-23 09:51:22 +00:00
florian
59abf2555b
* types.pas renamed to defbase.pas because D6 contains a types
...
unit so this would conflicts if D6 programms are compiled
+ Willamette/SSE2 instructions to assembler added
2002-07-20 11:57:52 +00:00
florian
31da813d1d
* exit is now a syssym instead of a keyword
2002-07-16 15:34:20 +00:00
carl
e8451626f6
* longstring declaration now gives parser error since its not supported!
2002-07-06 20:18:02 +00:00
Jonas Maebe
f33ee551d7
* fixed web bug #1995
2002-06-12 15:46:14 +00:00
peter
06ebac4e27
* readded missing revisions
2002-05-18 13:34:04 +00:00
carl
21b3a10f02
+ defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
...
+ try to fix temp allocation (still in ifdef)
+ generic constructor calls
+ start of tassembler / tmodulebase class cleanup
2002-05-16 19:46:34 +00:00
peter
2992e1819c
* removed old logs and updated copyright year
2002-05-14 19:34:38 +00:00
peter
4dcd96747e
* moved entry and exitcode to ncgutil and cgobj
...
* foreach gets extra argument for passing local data to the
iterator function
* -CR checks also class typecasts at runtime by changing them
into as
* fixed compiler to cycle with the -CR option
* fixed stabs with elf writer, finally the global variables can
be watched
* removed a lot of routines from cga unit and replaced them by
calls to cgobj
* u32bit-s32bit updates for and,or,xor nodes. When one element is
u32bit then the other is typecasted also to u32bit without giving
a rangecheck warning/error.
* fixed pascal calling method with reversing also the high tree in
the parast, detected by tcalcst3 test
2002-05-12 16:53:04 +00:00
peter
67ede1276b
* add pinline unit that inserts compiler supported functions using
...
one or more statements
* moved finalize and setlength from ninl to pinline
2002-04-23 19:16:34 +00:00
peter
6320530bdd
* removed newn and disposen nodes, the code is now directly
...
inlined from pexpr
* -an option that will write the secondpass nodes to the .s file, this
requires EXTDEBUG define to actually write the info
* fixed various internal errors and crashes due recent code changes
2002-04-21 19:02:03 +00:00
peter
8af460ac31
* using inherited; without a parent having the same function
...
will do nothing like delphi
2002-04-16 16:11:17 +00:00
carl
da8b01e708
+ change unit use
2002-04-07 13:25:20 +00:00
Jonas Maebe
2965034fca
* fixed web bug #1907
...
* fixed some other procvar related bugs (all related to accepting procvar
constructs with either too many or too little parameters)
(both merged, includes second typo fix of pexpr.pas)
2002-04-01 20:57:13 +00:00
Jonas Maebe
7fb55bf4e4
+ a_loadfpu_* and a_loadmm_* methods in tcg
...
* register allocation is now handled by a class and is mostly processor
independent (+rgobj.pas and i386/rgcpu.pas)
* temp allocation is now handled by a class (+tgobj.pas, -i386\tgcpu.pas)
* some small improvements and fixes to the optimizer
* some register allocation fixes
* some fpuvaroffset fixes in the unary minus node
* push/popusedregisters is now called rg.save/restoreusedregisters and
(for i386) uses temps instead of push/pop's when using -Op3 (that code is
also better optimizable)
* fixed and optimized register saving/restoring for new/dispose nodes
* LOC_FPU locations now also require their "register" field to be set to
R_ST, not R_ST0 (the latter is used for LOC_CFPUREGISTER locations only)
- list field removed of the tnode class because it's not used currently
and can cause hard-to-find bugs
2002-03-31 20:26:33 +00:00
peter
935bb2185a
* fixed sizeof(TClass) to return only 4
2002-03-01 14:08:26 +00:00
peter
190ead04c0
* more fixes for protected handling
2002-02-03 09:30:03 +00:00
peter
0c96d4406b
* more checks for private and protected
2002-01-29 21:25:22 +00:00
peter
fd2ad837e2
* implicit result variable generation for assembler routines
...
* removed m_tp modeswitch, use m_tp7 or not(m_fpc) instead
2002-01-24 18:25:48 +00:00
peter
5cdb7cc52b
* removed getprocvar, use only getprocvardef
2002-01-06 21:47:32 +00:00
peter
60d2ddbbd5
* protected/private symbols parsing fixed
2001-12-31 16:59:41 +00:00
florian
b60666ae1f
+ parasym to tparaitem added
2001-12-06 17:57:33 +00:00
florian
9f9c1700b0
* variant paramter passing and functions results fixed
2001-11-14 01:12:44 +00:00
peter
887f6ba34c
* removed obsolete chainprocsym and test_procsym code
2001-11-02 23:16:50 +00:00
peter
d2e1952377
* procsym definition rewrite
2001-11-02 22:58:00 +00:00
peter
ac400051bd
* allow assignment of overloaded procedures to procvars when we know
...
which procedure to take
2001-10-28 17:22:25 +00:00
marco
7215d46735
* Make new/dispose system functions instead of keywords
2001-10-24 11:51:39 +00:00
peter
075b5188ee
* better support for indexed properties
2001-10-21 13:10:50 +00:00
peter
cb06c9bcb8
* array access for properties added
2001-10-21 12:33:05 +00:00
peter
17d6dded66
* interface 2 guid support
...
* guid constants support
2001-10-20 19:28:37 +00:00
Jonas Maebe
daa7693b45
* property parameters are now fully parsed by the firstcall code to
...
check for the correct amount and types (merged)
2001-10-18 16:30:38 +00:00
peter
915b5cd7a9
* split constsym.value in valueord,valueordptr,valueptr. The valueordptr
...
is used for holding target platform pointer values. As those can be
bigger than the source platform.
2001-09-02 21:18:28 +00:00
florian
9746f4c2d6
* some cg reorganisation
...
* some PPC updates
2001-08-26 13:35:06 +00:00
florian
032023f8de
* some interfaces related problems regarding
...
mapping of interface implementions fixed
2001-08-22 21:16:20 +00:00
peter
81200dc9ef
* funcret moved from tprocinfo to tprocdef
2001-08-06 21:40:46 +00:00
peter
db87f86f00
* Length made internal
...
* Add array support for Length
2001-07-09 21:15:40 +00:00
Jonas Maebe
77a99eecdf
* fixed inconsistent handling of procvars in FPC mode (sometimes @ was
...
required to assign the address of a procedure to a procvar, sometimes
not. Now it is always required) (merged)
2001-06-29 14:16:57 +00:00
peter
d7eb8e1e6b
* fixed tp procvar support in parameters of a called procvar
...
* typenode cleanup, no special handling needed anymore for bt_type
2001-06-04 18:16:42 +00:00
peter
04be6d3ced
* parse const after .. using bt_const block to allow expressions, this
...
is Delphi compatible
2001-06-04 11:45:35 +00:00
peter
d997613a11
* allow typenodes for typeinfo and typeof
...
* tp procvar fixes for properties
2001-05-19 21:15:53 +00:00
peter
be05f2b65b
* fixed crash with auto dereferencing
2001-05-19 12:23:59 +00:00
peter
13877f29b2
* removed unused allow_type
2001-05-09 19:52:51 +00:00
florian
3c5793d8c6
* some Delphi incompatibilities fixed:
...
- out, dispose and new can be used as idenfiers now
- const p = apointerype(nil); is supported now
+ support for const p = apointertype(pointer(1234)); added
2001-05-04 15:52:03 +00:00
peter
af5d6e60e7
* moved more code from pass_1 to det_resulttype
2001-04-14 14:07:10 +00:00
peter
ff4ee28066
* fpc mode now requires @ also when left of assignment is an procvardef
2001-04-13 23:50:24 +00:00
peter
a7cf57524e
* symtable change to classes
...
* range check generation and errors fixed, make cycle DEBUG=1 works
* memory leaks fixed
2001-04-13 01:22:06 +00:00
peter
b193bf7df3
* remove unnecessary calls to firstpass
2001-04-04 22:43:50 +00:00
peter
4e2655cdc5
* resulttype rewrite
2001-04-02 21:20:29 +00:00
peter
d8abf76f6b
* getsym redesign, removed the globals srsym,srsymtable
2001-03-11 22:58:49 +00:00
peter
32b9cdb7cf
+ new tlinkedlist class (merge of old tstringqueue,tcontainer and
...
tlinkedlist objects)
2000-12-25 00:07:25 +00:00
peter
1103739912
* cardinal const expr fix from jonas
2000-12-19 20:36:03 +00:00
peter
4df5f03ca7
* fixed static variables
2000-12-17 14:00:18 +00:00
Jonas Maebe
0a70f9b06e
* only return int64's from functions if it int64funcresok is defined
...
+ added int64funcresok define to options.pas
2000-12-15 13:26:01 +00:00
michael
62950eb5c5
+ Fix from Peter
2000-12-15 12:13:52 +00:00
Jonas Maebe
c91a23c27d
* new constant handling: from now on, hex constants >$7fffffff are
...
parsed as unsigned constants (otherwise, $80000000 got sign extended
and became $ffffffff80000000), all constants in the longint range
become longints, all constants >$7fffffff and <=cardinal($ffffffff)
are cardinals and the rest are int64's.
* added lots of longint typecast to prevent range check errors in the
compiler and rtl
* type casts of symbolic ordinal constants are now preserved
* fixed bug where the original resulttype wasn't restored correctly
after doing a 64bit rangecheck
2000-12-07 17:19:42 +00:00
florian
b9796f6a7f
* unused units removed from uses clause
...
* some changes for widestrings
2000-11-29 00:30:30 +00:00
florian
68c1a1e3e6
* System.TypeInfo fixed
...
+ System.Finalize implemented
+ some new keywords for interface support added
2000-11-09 17:46:54 +00:00
peter
8df98007d6
* more fixes to get make cycle working
2000-11-06 20:30:54 +00:00
florian
51527ba1c9
+ merged Attila's changes for interfaces, not tested yet
2000-11-04 14:25:19 +00:00
peter
451723647e
* symtable splitted, no real code changes
2000-10-31 22:02:46 +00:00
peter
8e4f77b0a5
* fixed crash with call from type decl which is not allowed (merged)
2000-10-26 23:40:54 +00:00
florian
f80c24177a
* a lot of changes:
...
- basic dyn. array support
- basic C++ support
- some work for interfaces done
....
2000-10-21 18:16:11 +00:00
peter
e171f341a0
* moehrendorf oct 2000 rewrite
2000-10-14 10:14:45 +00:00
peter
38951f5ce1
* lot of compile updates for cg11
2000-10-01 19:48:23 +00:00
peter
5218af7926
* delphi compile fixes
2000-09-24 21:19:48 +00:00
peter
a71e44ac49
* use defines.inc
2000-09-24 15:06:10 +00:00
peter
4c94659743
* moved some util functions from globals,cobjects to cutils
...
* splitted files into finput,fmodule
2000-08-27 16:11:48 +00:00
peter
90fc8a53aa
* auto derefence mode for array pointer (merged)
2000-08-20 15:12:49 +00:00
peter
7eaac1706d
* splitted namedobjectitem.next into indexnext and listnext so it
...
can be used in both lists
* don't allow "word = word" type definitions (merged)
2000-08-16 18:33:53 +00:00
florian
244fc53520
+ support of 64 bit integer constants
2000-08-16 13:06:06 +00:00
peter
4549ef44e1
* merges from fixes
2000-08-04 22:00:50 +00:00
michael
650fbb86aa
+ removed logs
2000-07-13 11:32:24 +00:00
michael
e7aca136a1
+ Initial import
2000-07-13 06:29:38 +00:00
peter
2ce33303a3
* support for inherited; only
2000-06-14 16:52:42 +00:00
pierre
7b1219536c
+ support for NOT overloading
...
+ unsupported overloaded operators generate errors
2000-06-05 20:41:17 +00:00
pierre
6433e1d8c2
tok2node moved to htypechk unit
2000-06-02 21:22:56 +00:00
peter
d75bbf8b73
* fixed crash with inherited with varsym/propsym
2000-03-23 15:56:59 +00:00
peter
797267fde1
* protected member check for classes works
2000-03-19 11:22:21 +00:00
pierre
e0cc4f9bed
+ oppower
2000-03-16 15:13:03 +00:00
pierre
34795ccd60
* - 1**4 = -1 fix
2000-03-14 15:50:19 +00:00
Jonas Maebe
0ab87d5ed8
* modifications to make the compiler functional when compiled with
...
-Or
2000-02-13 14:21:50 +00:00
peter
4a4a24b6e8
* log truncated
2000-02-09 13:22:42 +00:00
florian
6c3bbb7915
* corrected wrong error message of a member of a class/object/classref wasn't found
2000-01-19 22:41:58 +00:00
peter
99fe175be6
* added st_default stringtype
...
* genstringconstnode extended with stringtype parameter using st_default
will do the old behaviour
2000-01-09 23:16:05 +00:00
peter
e525797c51
* updated copyright to 2000
2000-01-07 01:14:18 +00:00
pierre
6d8f8ef3f9
* web bug769 fix
1999-12-20 21:24:29 +00:00
peter
d3b404c1a4
* fixed bug #698
...
* removed some notes about unused vars
1999-12-01 12:42:31 +00:00
peter
0512ba80fb
+ ttype, tsymlist
1999-11-30 10:40:42 +00:00
pierre
b528749138
* Notes/Hints for local syms changed to
...
Set_varstate function
1999-11-18 15:34:44 +00:00
pierre
62da9bd4c0
* Notes/hints changes
1999-11-17 17:04:58 +00:00
pierre
94f418dc11
+ one field added for ttoken record for operator
...
linking the id to the corresponding operator token that
can now now all be overloaded
* overloaded operators are resetted to nil in InitSymtable
(bug when trying to compile a uint that overloads operators twice)
1999-11-15 17:52:59 +00:00
peter
8cbc068314
* fixed crash with an errordef
1999-11-14 15:57:35 +00:00
florian
7265215469
* problem with "index X"-properties solved
...
* typed constants of class references are now allowed
1999-11-08 14:02:16 +00:00
florian
917bf5b071
* previous fix for 517 was imcomplete: there was a problem if the property
...
had only an index
1999-11-07 23:21:30 +00:00
florian
8b40781b6c
* finally bug #517 solved ...
1999-11-07 23:16:49 +00:00
peter
0887060ff2
* truncated log to 20 revs
1999-11-06 14:34:16 +00:00
peter
338a386280
* fixed inherited with properties
1999-11-05 00:10:30 +00:00
peter
e0fe0916fd
* check for object in extended new
1999-10-27 16:06:19 +00:00
peter
503d5a1cfa
* const parameter is now checked
...
* better and generic check if a node can be used for assigning
* export fixes
* procvar equal works now (it never had worked at least from 0.99.8)
* defcoll changed to linkedlist with pparaitem so it can easily be
walked both directions
1999-10-26 12:30:40 +00:00
peter
8e7dd52200
* error when properties are passed to var parameters
1999-10-22 14:37:25 +00:00
peter
89b677a0ee
* split type reading from pdecl to ptype unit
...
* parameter_dec routine is now used for procedure and procvars
1999-10-22 10:39:34 +00:00
florian
fa19f0aa09
- removed the hcodegen use in the new cg, use cgbase instead
1999-10-14 14:57:51 +00:00
peter
6b2a0a3a5c
* fixed result access in 'if result = XXX then'
...
* fixed const cr=chr(13)
1999-09-28 11:03:54 +00:00
peter
6b1ab5eb31
* procinfo is now a pointer
...
* support for result setting in sub procedure
1999-09-27 23:44:46 +00:00
peter
0f8f8e8ff4
* fix for pointer reading in const with @type.method
1999-09-27 11:59:42 +00:00
peter
2687d75c38
+ constant pointer support which can happend with typecasting like
...
const p=pointer(1)
* better procvar parsing in typed consts
1999-09-26 21:30:15 +00:00
florian
1c638f2952
* small fix to operator overloading when in MMX mode
...
+ the compiler uses now fldz and fld1 if possible
+ some fixes to floating point registers
+ some math. functions (arctan, ln, sin, cos, sqrt, sqr, pi) are now inlined
* .... ???
1999-09-15 20:35:37 +00:00
peter
8a6774104d
* fix crash with empty object as childs
1999-09-13 16:26:32 +00:00
florian
35eef74308
* bug fix for @tobject.method, fixes bug #557 , 605 and 606
1999-09-11 19:47:26 +00:00
florian
1609dde2ca
* fixed bug #596
...
* fixed some problems with procedure variables and procedures of object,
especially in TP mode. Procedure of object doesn't apply only to classes,
it is also allowed for objects !!
1999-09-11 09:08:31 +00:00
florian
a9d8bfa1f7
* some bug fixes (e.g. must_be_valid and procinfo.funcret_is_valid)
...
* most things for stored properties fixed
1999-09-10 18:48:00 +00:00
peter
7fd914d24c
* @(<x>) support
1999-09-07 08:01:20 +00:00
peter
678aa200f1
* fixed crash with assigned()
1999-09-01 22:08:58 +00:00
peter
7b5e8ad618
* fixed property writeaccess which was buggy after my previous
...
subscribed property access
1999-08-15 22:47:45 +00:00
peter
8d9aa81d3a
* hack to support property with record fields
1999-08-14 00:38:53 +00:00
peter
67e1069659
* fixed crash after wrong para's with class contrustor
1999-08-09 22:16:29 +00:00
peter
cb8aeb3fd6
* V_Fatal=1, all other V_ are also increased
...
* Check for local procedure when assigning procvar
* fixed comment parsing because directives
* oldtp mode directives better supported
* added some messages to errore.msg
1999-08-05 16:52:53 +00:00
florian
ab66749e27
* new(...)^. is now allowed
1999-08-04 13:49:45 +00:00
Jonas Maebe
ace7ff6983
* all tokens now start with an underscore
...
* PowerPC compiles!!
1999-08-04 13:02:40 +00:00
florian
ca53eee67e
* renamed i386asm and i386base to cpuasm and cpubase
1999-08-04 00:22:34 +00:00
peter
ed8eb13d59
* moved bitmask constants to sets
...
* some other type/const renamings
1999-08-03 22:02:29 +00:00
michael
eba7f7c4ed
+ Changes for alpha
1999-08-03 13:50:16 +00:00
florian
7e74642b02
* modifications for the new code generator
1999-08-01 18:28:09 +00:00
peter
538e677425
* fixed crash with unknown id and colon parameter in write
1999-07-30 12:28:40 +00:00
peter
30be2bf063
* indirect type referencing is now allowed
1999-07-27 23:42:10 +00:00
peter
62273909ca
* fixed crash with resourcestring
1999-07-23 21:31:42 +00:00
peter
f380e3bd68
* error for illegal type reference, instead of 10998
1999-07-23 11:37:46 +00:00
florian
35f636dea1
+ resourcestring implemented
...
+ start of longstring support
1999-07-22 09:37:28 +00:00
peter
45bf051885
* merged
1999-07-16 10:04:32 +00:00
florian
42f09e54ae
* another fix for TP/Delphi styled procedure variables
1999-07-06 22:38:11 +00:00
peter
248826aa81
* removed temp defines
1999-07-05 20:13:06 +00:00
peter
e303022851
* merged
1999-07-01 21:33:57 +00:00
florian
cc8c629550
* two bugs regarding method variables fixed
...
- if you take in a method the address of another method
don't need self anymore
- if the class pointer was in a register, wrong code for a method
variable load was generated
1999-06-30 15:43:18 +00:00
pierre
2083621f3e
* mereg from fixes-0_99_12 branch
1999-06-26 00:24:53 +00:00
pierre
e8da115c3f
* merged from 0_99_12 branch
1999-06-17 13:19:50 +00:00
peter
c36ae78617
* merged
1999-06-15 18:58:33 +00:00
peter
99395db696
* merged from fixes
1999-06-13 22:41:05 +00:00
pierre
5f05d07dcb
* previous wrong log corrected
1999-06-02 22:43:57 +00:00
pierre
35777a48a1
types.pas
1999-06-02 22:25:22 +00:00
peter
94c276ce8d
* better checks for procvar and methodpointer
1999-06-01 19:27:47 +00:00
peter
0b272f13c7
* removed oldasm
...
* plabel -> pasmlabel
* -a switches to source writing automaticly
* assembler readers OOPed
* asmsymbol automaticly external
* jumptables and other label fixes for asm readers
1999-05-27 19:43:55 +00:00
peter
e8bf496ae8
* containsself fixes
...
* checktypes()
1999-05-18 14:15:18 +00:00
peter
d4659125d9
* procedure of object and addrn fixes
1999-05-18 09:52:17 +00:00
peter
b9d655b118
* remove firstcallparan which looks obsolete
1999-05-16 17:06:31 +00:00
florian
d8307b9cd3
* override isn't allowed in objects!
1999-05-12 22:36:04 +00:00
florian
a62eb5e144
* first fix for a problem with method pointer properties, still doesn't work
...
with WITH
1999-05-07 10:35:20 +00:00
peter
9abbb34b34
* fixed crash
1999-05-06 21:40:16 +00:00
peter
8ba31512e1
* check for calln in handle_procvar
1999-05-06 10:13:20 +00:00
peter
1c96916943
* generic write_float and str_float
...
* fixed constant float conversions
1999-05-06 09:05:05 +00:00
florian
78d13ec796
* changes to compile it with Delphi 4.0
1999-05-04 21:44:30 +00:00
peter
611da2d24e
* merged nasm compiler
...
* old asm moved to oldasm/
1999-05-01 13:23:57 +00:00
peter
49786e5fe5
* farpointerdef moved into pointerdef.is_far
1999-04-26 18:29:54 +00:00
peter
d2f717c9e0
* removed my property fix
1999-04-19 09:27:48 +00:00
peter
0869bc80e9
* class property without write support
1999-04-19 09:13:47 +00:00
florian
b6a9251cf3
* property problem fixed: a propertysym is only a write
...
access if it is followed by a assignment token
1999-04-19 06:10:08 +00:00
peter
dc1f9b5bbb
* addr() internal
1999-04-17 13:10:23 +00:00
peter
10c57d43f3
* fixed property write
1999-04-15 09:00:08 +00:00
florian
982e083f76
* fixed problem with default properties which are a class
...
* case bug (from the mailing list with -O2) fixed, the
distance of the case labels can be greater than the positive
range of a longint => it is now a dword for fpc
1999-04-08 20:59:37 +00:00
peter
ee82810a16
* more use of ttoken
1999-04-06 11:21:56 +00:00
peter
2bfdf91c5c
* assembler inlining working for ag386bin
1999-03-31 13:55:03 +00:00
peter
6a802e85d7
* released valintern
...
+ deffile is now removed when compiling is finished
* ^( compiles now correct
+ static directive
* shrd fixed
1999-03-26 00:05:26 +00:00
peter
d0cb5a147a
* fixed bugs 212,222,225,227,229,231,233
1999-03-24 23:16:42 +00:00
Jonas Maebe
1e6d667c3b
* changes for internal Val code (do a "make cycle OPT=-dvalintern" to test)
...
* in cgi386inl: also range checking for subrange types (compile with "-dreadrangecheck")
* in cgai386: also small fixes to emitrangecheck
1999-03-16 17:52:52 +00:00
pierre
58bfc3ac78
* some m68k fixes (still not compilable !)
...
* new(tobj) does not give warning if tobj has no VMT !
1999-03-04 13:55:39 +00:00
florian
a7179a75db
* behaviaor of PROTECTED and PRIVATE fixed, works now like TP/Delphi
1999-02-22 15:09:39 +00:00
peter
bf9b5e3a54
* updates for ag386bin
1999-02-22 02:14:59 +00:00
pierre
f59803f7d2
* fix for normal method calls inside static methods :
...
WARNING there were both parser and codegen errors !!
added static_call boolean to calln tree
1999-02-11 09:46:21 +00:00
florian
3134c9352e
* small fix for method pointers
...
* found the annoying strpas bug, mainly nested call to type cast which
use ansistrings crash
1999-01-28 14:06:45 +00:00
florian
ccd94e19cc
* "procedure of object"-stuff fixed
1999-01-27 00:13:52 +00:00
pierre
0cfc4c8f6b
* fix for constructor inside with statements
1999-01-21 16:40:51 +00:00
peter
6ee9d913cd
+ farpointer type
...
* absolutesym now also stores if its far
1998-12-30 22:15:45 +00:00
peter
1b369bb4bb
+ globtype,tokens,version unit splitted from globals
1998-12-11 00:02:37 +00:00
florian
df1edc9bc0
* some stuff for procedures of object added
...
* bug with overridden virtual constructors fixed (reported by Italo Gomes)
1998-12-04 10:18:06 +00:00
peter
a41f61713d
+ open strings, $P switch support
1998-11-27 14:50:30 +00:00
pierre
4201ea4903
* var:=new(pointer_type) support added
1998-11-25 19:12:51 +00:00
peter
fdb8d828a6
+ nil constants
1998-11-13 10:18:09 +00:00
peter
3037445491
* released useansistring
...
* removed -Sv, its now available in fpc modes
1998-11-05 12:02:30 +00:00
peter
de4cf49059
* ansistring fixes
1998-11-04 10:11:36 +00:00
peter
e659040083
* fixed filedef for typenodetype
1998-10-22 23:57:29 +00:00
pierre
6c1766feed
* bug fix for IOCHECK inside a procedure with iocheck modifier
...
* removed the GPF for unexistant overloading
(firstcall was called with procedinition=nil !)
* changed typen to what Florian proposed
gentypenode(p : pdef) sets the typenodetype field
and resulttype is only set if inside bt_type block !
1998-10-21 15:12:49 +00:00
pierre
4494bfafb6
* type ptree only allowed inside expression
...
if following sizeof typeof low high or as first arg of new !!
1998-10-20 15:10:15 +00:00
pierre
136cf23427
* calling of private method allowed inside child object method
1998-10-20 11:15:44 +00:00
pierre
a5f0168fbb
* wrong stabs info corrected once again !!
...
+ variable vmt offset with vmt field only if required
implemented now !!!
1998-10-19 08:54:53 +00:00
pierre
d91210671d
+ added oo_hasconstructor and oo_hasdestructor
...
for objects options
1998-10-15 15:13:25 +00:00
peter
1468993242
* new style for m68k/i386 infos and enums
1998-10-13 13:10:08 +00:00
pierre
9ec2dfaf4a
+ added tai_const_symbol_offset
...
for r : pointer = @var.field;
* better message for different arg names on implementation
of function
1998-10-12 12:20:37 +00:00
florian
8cc7f2636e
+ auto dereferencing of pointers to structured types in delphi mode
1998-10-12 10:28:30 +00:00
peter
e3dedeb4b2
* fixed mem leak with arrayconstrutor
1998-10-12 10:05:41 +00:00
peter
166faa64f6
* crash preventions
1998-10-05 13:57:13 +00:00
peter
369e79adf9
+ assert() support
1998-10-05 12:32:44 +00:00
peter
630d8ea8d2
* crash preventions
1998-10-01 14:56:24 +00:00
florian
2cd812215b
* better error recovering
1998-09-30 07:40:33 +00:00
florian
70920974de
* two fixes to get ansi strings work
1998-09-28 16:18:16 +00:00
peter
d4ac5e456b
+ idtoken and only one token table
1998-09-26 17:45:30 +00:00
peter
8e85a889de
+ aktmodeswitches
1998-09-24 23:49:05 +00:00
florian
7ff17144f4
* problem with with and classes fixed
1998-09-23 15:46:36 +00:00
peter
a3fbac27af
* first working array of const things
1998-09-23 09:58:48 +00:00
florian
31ec3c428f
* hasharray for defs fixed
...
* ansistring code generation corrected (init/final, assignement)
1998-09-20 09:38:45 +00:00
florian
af83d90357
* some changes to compile with Delphi
1998-09-18 16:03:37 +00:00
pierre
8aa4df4046
sizeof(TPOINT) problem
1998-09-17 13:41:16 +00:00
pierre
06104cdb46
* forward def are not put in record or objects
...
+ added check for forwards also in record and objects
* dummy parasymtable for unit initialization removed from
symtable stack
1998-09-09 11:50:52 +00:00
peter
cba20a515a
* fixed str(boolean,string) which was allowed
...
* fixed write(' ':<int expression>) only constants where allowed :(
1998-09-07 22:25:48 +00:00
peter
12a80cf3dc
* update smartlinking, uses getdatalabel
...
* renamed ptree.value vars to value_str,value_real,value_set
1998-09-07 18:45:52 +00:00
peter
58c2d999f0
* updated some error messages
1998-09-04 08:41:36 +00:00
peter
d66124cb2f
+ internal constant functions
1998-09-01 17:39:46 +00:00
peter
5c013220a3
* fixed smallset generation from elements, it has never worked before!
1998-08-28 10:54:18 +00:00
florian
c1c5ec3235
* internalerror with mod/div fixed
1998-08-23 16:07:20 +00:00
pierre
b61cd6cd0e
+ TEST_FUNCRET now default (old code removed)
...
works also for m68k (at least compiles)
1998-08-21 14:08:39 +00:00
peter
7c8e445400
* fixed 'with object do' bug
1998-08-20 21:36:38 +00:00
pierre
2d9cbf7fde
+ funcret setting in underproc testing
...
compile with _dTEST_FUNCRET
1998-08-20 09:26:37 +00:00
pierre
d72ca253fe
* bug for -So proc assignment to p^rocvar fixed
1998-08-18 16:48:48 +00:00
pierre
6a556346ed
* bug about assigning the return value of a function to
...
a procvar fixed : warning
assigning a proc to a procvar need @ in FPC mode !!
* missing file/line info restored
1998-08-18 14:17:08 +00:00
pierre
2222aab027
* small warning position bug fixed
...
* support_mmx switches splitting was missing
* rhide error and warning output corrected
1998-08-18 09:24:35 +00:00
peter
49e9cc95b0
* fixed proc()=expr which was not allowed anymore by my previous fix
1998-08-15 16:50:29 +00:00
peter
fb1bcf7724
+ dynamic set contruction
...
* smallsets are now working (always longint size)
1998-08-14 18:18:37 +00:00
peter
1a6ee8d4f3
* fixed procedure<>procedure construct
1998-08-13 11:00:09 +00:00
peter
befed16714
* write extended to ppu file
...
* new version 0.99.7
1998-08-11 15:31:35 +00:00
peter
d5e1886c8c
* fixed sizeof(array of char)
1998-08-11 14:05:32 +00:00
peter
85c8a88cbe
+ localswitches, moduleswitches, globalswitches splitting
1998-08-10 14:49:33 +00:00
florian
25b34c1c6c
+ implementation of raise and try..finally
...
+ some misc. exception stuff
1998-07-28 21:52:49 +00:00
florian
4caf39e3ac
* fix to allow tv like stream registration:
...
@tmenu.load doesn't work if load had parameters or if load was only
declared in an anchestor class of tmenu
1998-07-27 21:57:13 +00:00
peter
c9715847f6
* updated messages file
1998-07-14 21:46:38 +00:00
peter
4ac8e5d18f
+ internal inc/dec
1998-06-25 14:04:17 +00:00
pierre
5ad339b3d8
+ added procedure directive parsing for procvars
...
(accepted are popstack cdecl and pascal)
+ added C vars with the following syntax
var C calias 'true_c_name';(can be followed by external)
reason is that you must add the Cprefix
which is target dependent
1998-06-09 16:01:33 +00:00
pierre
1a44be1502
* fixes for inline for operators
...
* inline procedure more correctly restricted
1998-06-05 14:37:27 +00:00
peter
f66f837fc8
* m68k compiles
...
+ .def file creation moved to gendef.pas so it could also be used
for win32
1998-06-04 23:51:26 +00:00
pierre
afe0d5a50d
* demangled name of procsym reworked to become independant of the mangling scheme
...
Come test_funcret improvements (not yet working)S: ----------------------------------------------------------------------
1998-06-04 09:55:35 +00:00
pierre
f08a7114ae
* with node corrected for objects
...
* small bugs for SUPPORT_MMX fixed
1998-06-02 17:02:59 +00:00
peter
7b28ebd6ef
* symtable.pas splitted into includefiles
...
* symtable adapted for $ifdef NEWPPU
1998-05-27 19:45:02 +00:00
pierre
804a6a36dc
* bug fix for empty sets (nil pd was dereferenced )
1998-05-26 07:53:59 +00:00
pierre
af65f86213
* firstpasscount bug fixed
...
now all is already set correctly the first time
under EXTDEBUG try -gp to skip all other firstpasses
it works !!
* small bug fixes
- for smallsets with -dTESTSMALLSET
- some warnings removed (by correcting code !)
1998-05-25 17:11:36 +00:00
peter
b3865ae063
+ aktasmmode, aktoptprocessor, aktoutputformat
...
+ smartlink per module $SMARTLINK-/+ (like MMX) and moved to aktswitches
+ $LIBNAME to set the library name where the unit will be put in
* splitted cgi386 a bit (codeseg to large for bp7)
* nasm, tasm works again. nasm moved to ag386nsm.pas
1998-05-23 01:20:53 +00:00
carl
ed8a63512c
* crash bugfix (patched msanually to main branch)
1998-05-22 12:37:03 +00:00
peter
994d0eb578
+ better procedure directive handling and only one table
1998-05-21 19:33:31 +00:00
pierre
c80de3be27
+ UseTokenInfo now default
...
* unit in interface uses and implementation uses gives error now
* only one error for unknown symbol (uses lastsymknown boolean)
the problem came from the label code !
+ first inlined procedures and function work
(warning there might be allowed cases were the result is still wrong !!)
* UseBrower updated gives a global list of all position of all used symbols
with switch -gb
1998-05-20 09:42:32 +00:00