8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-26 08:03:03 +01:00
Commit Graph

308 Commits

Author SHA1 Message Date
arnobrinkman
3326dd95ff Fix another "with check option" issue <sigh> 2005-09-27 20:41:18 +00:00
dimitr
3e575cc3ba Let's recognize an attempt to alter a not existing table earlier than in DYN.
In particular, this prevents a server crash introduced by some recent DDL checks.
2005-09-19 14:48:26 +00:00
robocop
aab2d20725 - Get rid of DBB_v3 in DSQL and put a message just in case we find ODS<=7 (impossible in theory, since FB wouldn't open such db).
- Put mnemonics for two hardcoded error msgs I hijacked from DYN years ago. Now they are defined for the SQLERR facility.
2005-09-10 07:15:24 +00:00
dimitr
d946030bed Small correction. 2005-09-09 09:07:08 +00:00
dimitr
9309486dba Clear the DSQL metadata cache after ALTER EXTERNAL FUNCTION statement. 2005-09-09 06:40:44 +00:00
dimitr
898cb02240 1) Made output parameter naming a common procedure instead of select-list private code.
2) Allowed value expressions in the RETURNING clause.
2005-09-02 05:30:16 +00:00
asfernandes
f93bf8d46a Fixed problem of implict NOT NULL (in PRIMARY KEY constraint) being generated with the same constraint name of the PK.
Thanks to my brother Adilson for the test case.
2005-08-29 18:41:21 +00:00
robocop
22742ccdd7 Tweak DYN to solve several issues:
- Allow to set and drop defaults for table's fields (as it has been possible with domains).
- Stop people from setting a default value for array types.
- Close checking holes that allowed people to change from scalar types to array types and vice/versa.
- Improve some error messages.
2005-08-14 05:48:20 +00:00
arnobrinkman
8b39342fdf Fix "WITH CHECK OPTION" bug introduced with tighter alias handling.
In fact the tighter alias handling was showing a hidden "bug".
2005-07-27 18:57:15 +00:00
arnobrinkman
22ac7c9cdc Fix derived table issues with NEW/OLD contexts (Triggers/check-constraints)
Also adjust IN predicate behaviour to derived table.
PLAN parsing for derived tables will be fixed later.
2005-07-25 14:43:28 +00:00
robocop
e28ed6b27c Try to indicate position of incomplete commands.
Some casts because statuses are fixed 32 quantities, not natural int types.
2005-06-16 05:11:08 +00:00
asfernandes
890494ac7c 1) Fixed SF #1016040 Missing external libraries causes engine exception
2) Use better error messages
2005-06-14 03:16:54 +00:00
hvlad
f07656ec54 Fixed SF bug #1211325 (BLOBs in external tables) 2005-06-11 11:36:59 +00:00
robocop
3a8cd43a05 Please Dmitry and try to report the line/column of an incomplete statement. 2005-06-11 00:20:22 +00:00
dimitr
00e0976294 Fixed bug with lost charset/collation in local variables,
reported by Eugene Kilin.
2005-06-08 13:42:59 +00:00
asfernandes
3647497a08 Misc. 2005-06-06 20:18:12 +00:00
asfernandes
559ce29c51 1) Replace length_ to strlen as noted by Claudio and Dmitry
2) Change USHORT to ULONG in intl.cpp
2005-06-06 18:14:10 +00:00
dimitr
15151d5bba Fixed charset/collation issues for view columns. 2005-06-06 11:06:01 +00:00
robocop
b8d1f00f94 - Corrections and changes to Adriano's commit, subject to his inspection.
- Solved an endless loop with trim and zero-length trim characters, etc.
- Some places are signaled with FB_COMPILER_MESSAGE for prompt attention.
2005-06-06 08:30:03 +00:00
asfernandes
59213efe7e Merge INTL branch into HEAD 2005-05-27 22:45:31 +00:00
robocop
3aaa840483 Misc. 2005-05-22 03:11:41 +00:00
robocop
b490df3a41 ALTER EXTERNAL FUNCTION: be able to change the entry_point or the module_name when the UDF cannot be dropped to correct the declaration because it's used in some view, procedure, trigger or check. 2005-05-22 02:42:17 +00:00
robocop
da0a6bba5b Getting rid of commented code that belonged to the dead shared cache and/or WAL plus fixing some indentation. 2005-05-19 07:34:46 +00:00
robocop
0285f6bf76 - Implement the proposed COMMENT keyword to allow descriptions in database objects. Subject to change or withdrawal.
- Enhance some messages. Reuse some msg numbers that were duplicate.
- Fix some issues found in Alex recent MetaName-related commits.
2005-05-17 07:17:25 +00:00
alexpeshkoff
b8929eecbf front-ported my fix from 1.5.2 - fixed AV in ALTER TABLE 2005-05-12 18:23:01 +00:00
dimitr
7c8fc55056 Fix for the bug reported by Bill Oliver. 2005-05-06 18:09:49 +00:00
dimitr
cce77ac325 Fixed issue reported by Adriano. 2005-04-16 18:21:09 +00:00
robocop
318cd7ae44 Fix DY's copy/paste bug. 2005-03-27 04:51:21 +00:00
dimitr
d25fcdc0c4 Implemented RECREATE EXCEPTION and CREATE OR ALTER EXCEPTION. 2005-03-26 16:11:52 +00:00
robocop
2f752f36aa Totally misc. 2005-03-04 00:01:42 +00:00
dimitr
e3a9d86662 Simplify code paths a bit. 2005-02-21 13:18:49 +00:00
dimitr
d7e75a86b1 Fixed some metadata issues with views. 2005-02-05 12:48:33 +00:00
robocop
72e54eb27d First attempt to fix SF Bug #512975.
Please let me know if the problem disappears or there's a bad side effect that I didn't detect.
2005-01-17 09:16:40 +00:00
robocop
6eabbaf772 Fix irrelevant SF Bug #512975.
CR-LF => blank. No trimming is made.
2005-01-12 05:09:42 +00:00
dimitr
f2d2ad2542 1. Allowed implicit NOT NULL declaration for a PRIMARY KEY constraint (per SQL-99)
2. Minor fixes and cleanup
2005-01-04 13:17:16 +00:00
robocop
d65307b497 Style. 2004-12-24 08:52:39 +00:00
robocop
950216de4e Misc. 2004-12-08 05:58:41 +00:00
dimitr
882b8defe4 Restored datatype. 2004-12-03 06:49:01 +00:00
dimitr
28ed1df100 1. Parser cleanup
2. SQL-99 synonyms for generators DDL/DML
3. Implemented REVOKE ADMIN OPTION FROM
2004-12-02 22:53:51 +00:00
robocop
af6a16107a Misc. 2004-11-30 06:18:39 +00:00
robocop
fd2bcc04e4 frb_sys_flag becomes fb_sys_flag 2004-11-29 09:09:42 +00:00
dimitr
a1bbad7ccf The entire RSE handling in the parser is slightly rewritten. New join syntax is introduced.
Notes:
1) Some features are disabled (via isc_wish_list) yet due to their incomplete implementation.
2) The parser may become unstable or cause regressions. It will be fixed ASAP.
2004-10-13 18:37:53 +00:00
robocop
ed17cfafbf Style:
if<space>(
for<space>(
switch<space>(
while<space>(
2004-10-04 08:15:00 +00:00
robocop
31ba754981 After talking to Ann, decided to disable several items:
- obsolete items like WAL and JOURNAL (cleaned in the past)
- crud from attempts never finished like the shared cache manager for Classic
- DSQL nodes that aren't used. This allowed freeing some keywords.
The functionality was disabled by commenting the code. No code has been deleted.
2004-10-03 04:49:04 +00:00
robocop
33c2a7eb17 Totally misc: typo in comment 2004-09-09 08:58:13 +00:00
alexpeshkoff
5ba5453a30 fixed AV in DECLARE FILTER 2004-09-08 12:01:30 +00:00
dimitr
cf89467735 Let's describe literal NULLs correctly in expressions. 2004-09-04 18:24:12 +00:00
robocop
092dd6297e BY SCALAR_ARRAY param can't be used as a return param.
There's no support for that. It's only input param to the UDF.
2004-08-27 09:24:39 +00:00
robocop
1994913da7 Bring DSQL up to date with UDF capabilities in the engine.
Introduce SCALAR_ARRAY token.
2004-08-27 04:52:32 +00:00
dimitr
56e0b95ca5 Allow the DDL engine to understand literal NULLs in computed fields. 2004-08-17 11:19:41 +00:00
alexpeshkoff
31039a254e next step preparing to allocate auto objects memory from appropriate pool 2004-08-16 12:28:43 +00:00
skidder
43e98c3f52 Fix crash when changing data type for field and specify wrong type or domain name 2004-07-01 00:46:10 +00:00
alexpeshkoff
1591a54e5e Thread cleanup:
1. Added macros to declare thread entrypoints
2. THD_mutex_* functions use Firebird::Mutex
3. Thread local storage use fb_tls.h
2004-06-08 13:41:08 +00:00
robocop
1332d98618 Literal strings should be treated as const char* 2004-06-05 09:37:18 +00:00
alexpeshkoff
9a34ce553c make bool (isEmpty/hasData) checks for string and stack safe 2004-05-27 16:26:52 +00:00
brodsom
06f7148859 -Replace *_thread_data macros with inline functions 2004-05-22 14:23:10 +00:00
brodsom
68cb86b274 - Remove *_THREAD_DATA definitions from thd.h, are unneeded and conflicts with definitions in providers/services main headers (which need to use undef).
- Use different names for each service/provider *_THREAD_DATA macros.
2004-05-19 18:14:29 +00:00
brodsom
b76a60e8b7 Move THREAD_ functions from thd.h to thread_proto.h (and fix unix build) 2004-05-17 22:30:09 +00:00
brodsom
ee34db7e20 Macro cleaning (THREAD_*) 2004-05-15 00:58:46 +00:00
robocop
802f244ec1 Misc changes 2004-05-09 05:48:33 +00:00
skidder
43cb0d1ce4 Y-Valve handle translation layer 2004-05-02 23:06:37 +00:00
brodsom
2c0ab256cf Removing duplicated definitions between
ibase.h and blob_filter.h
ibase.h and constants.h
2004-04-29 17:48:39 +00:00
brodsom
2f4865a195 Replace defines for constants 2004-04-29 14:51:02 +00:00
brodsom
e0854daa99 Removing ib_stdio.h 2004-04-28 22:00:03 +00:00
alexpeshkoff
e0ce53cbec fixed number problems after lls to Stack conversion 2004-04-21 14:23:46 +00:00
alexpeshkoff
045e9dc8ec 1. removed any mentions of blk_pool() from engine (and method itself)
2. replaced 'struct lls' with 'template Stack'
2004-04-18 14:22:27 +00:00
robocop
59b235cea3 Small corrections 2004-04-10 00:25:22 +00:00
hvlad
7ab6e4c2f4 Corrects an error at DDL generation when the total size of all generated BLR exceeds 64K, but each slice does not exceed 64K. For ex, procedure sources is 55K and generated BLR is 12K.
Note: this fix is safe because jrd8_ddl (DYN_ddl\DYN_execute) do not use parameter 'length', wrongly declared as USHORT
2004-04-09 08:03:59 +00:00
robocop
e6187cecd2 Cleanup
Some bug fixes
Style
2004-03-07 07:58:55 +00:00
skidder
dc7aab8f9c Fix up exception handling. Handle (do not ignore) std::bad_alloc and generic exceptions, provide syscall and error information in system_call_failed 2004-03-01 03:35:23 +00:00
aafemt
fe89c2c502 Fix warning 2004-02-13 11:15:49 +00:00
robocop
663e3b16e7 Cleanup 2004-02-02 11:02:12 +00:00
robocop
2b295a9108 General cleanup. Sorry if I missed some occurrence. 2004-01-28 07:50:41 +00:00
skidder
08eee5ebaa Further AMD64 fixes. Given this fixes you may start playing with databases using isql_static. 2004-01-21 07:18:30 +00:00
hvlad
d09206678b Added support for default parameters and EXECUTE BLOCK statement 2004-01-16 10:43:21 +00:00
arnobrinkman
1cbc04f4cb Fix check constraint bug caused by my previously commit 2004-01-10 18:04:40 +00:00
robocop
84062732d8 More cleanup 2003-12-03 08:19:24 +00:00
robocop
9fafc348bf const correctness
vars in scope
minimal interface cleanup
small bug fixes
2003-11-28 06:48:34 +00:00
robocop
a94dbd85fd const correctness and other minor items 2003-11-18 07:58:35 +00:00
brodsom
c5253ae8a5 -Replace gds__ constants with isc_ contants
-Replace codes.h with iberror.h (or remove)
-Move gds__vax_integer and gds__event_block* to alt.cpp and isc_ to gds.cpp
-Use ISC_QUAD internally
-Use isc_vax_integer internally
2003-11-11 12:19:20 +00:00
robocop
f55c6f6f8c const correctness and cleanup 2003-11-10 09:16:38 +00:00
brodsom
43683ea52b Removing gdsold.h 2003-11-07 23:27:24 +00:00
dimitr
270dcf6aa0 Added ROWS clause. FIRST/SKIP remains allowed in unions, although I still think it doesn't have much sense. 2003-11-07 14:10:16 +00:00
brodsom
ff070a16a8 Replacing assert with fb_assert 2003-11-03 23:59:24 +00:00
dimitr
08a9f40b52 1. Reworked cursor management
2. Added explicit cursor statements
3. Slightly reworked LEAVE code
4. Lots of cleanup
2003-11-02 12:28:30 +00:00
robocop
cda707bd36 const correctness and other related changes 2003-11-01 10:26:43 +00:00
robocop
2230c2fbbb Style; comment unused code 2003-10-20 10:12:49 +00:00
brodsom
ca027789ee Correct recent Claudio's change to allow posix build again. 2003-10-19 23:03:19 +00:00
robocop
8182b6cba2 const correctness and other tasks 2003-10-16 08:51:06 +00:00
brodsom
938e66eb2f Macro cleaning 2003-10-14 22:22:32 +00:00
robocop
e0b551838f style 2003-10-05 06:33:56 +00:00
brodsom
c0485b7c67 Macro cleaning 2003-10-01 18:11:23 +00:00
aafemt
b5994fabad sym -> dsql_sym + some 'struct' cleanup 2003-10-01 10:58:07 +00:00
brodsom
7f07d2a8a8 Patch to make msvc build again after Nickolay changes 2003-09-30 22:59:12 +00:00
skidder
235db035ce Ok, i'm joining Firebird destruction team with my cleanup:
1. Bring trace DSQL, DYN and BLR trace logging up-to-date
2. Remove redundant CSB pointer dereferences in BLR parser and request compiler
3. Convert RIGHT JOIN to LEFT JOIN early during BLR parsing
4. Check BLR syntax for unititalized contexts usage
5. Some type-safety and const-correctness fixes
2003-09-28 21:36:05 +00:00
brodsom
4c9f386bd2 Macro cleaning 2003-09-28 00:36:28 +00:00
skidder
79dea9d5a3 - Fix incorrect assignment of DYN constants for NBACKUP
- Fix minor inconsistency in drop_generator DYN constant definition
Noted by Dmitry Emanov
2003-09-21 13:33:45 +00:00
brodsom
a2713837d2 Cleaning macros 2003-09-20 23:28:38 +00:00
robocop
f7dc675500 Trivial correction 2003-09-13 10:26:47 +00:00
robocop
2ed1a3e87b trivial correction 2003-09-12 09:19:21 +00:00
brodsom
b46945d049 BOOLEAN cleaning 2003-09-12 01:41:03 +00:00
arnobrinkman
f691e5d79c Change types that were used as booleans to the real bool type 2003-09-03 23:52:47 +00:00
arnobrinkman
e5574959ad Change BOOLEAN to bool type 2003-09-01 23:22:22 +00:00
brodsom
a062a7dcfd Correction 2003-09-01 07:39:54 +00:00
brodsom
03e528a79b -Remove GDS_VAL and GDS_REF 2003-08-30 01:54:25 +00:00
dimitr
323bae2372 1. MAP renamed to DSQL_MAP
2. Minor cleanup
3. Fixed BREAK/LEAVE code to support FOR EXECUTE STATEMENT loops
4. Added support for loop labels and LEAVE <label> statement
5. Fixed SUBSTRING to support value expressions as its arguments
2003-08-26 07:13:33 +00:00
arnobrinkman
a19beb8922 derived table support 2003-08-14 23:34:37 +00:00
skidder
143f8d2443 Implementation of fast physical incremental backup 2003-08-06 16:30:49 +00:00
brodsom
fda73f91a4 Changes only inside #ifdef DEBUG.
Needed to be able to build with -DDEBUG on gcc.(there are also some format corrections)
2003-06-30 10:48:03 +00:00
dimitr
df8750c65b Fixed metadata cache issues with CREATE OR ALTER statement. 2003-06-28 13:59:02 +00:00
dimitr
43aaa45d42 Enabled BREAK/LEAVE and EXITcommands in non-system triggers. 2003-05-14 08:15:25 +00:00
dimitr
90278add21 Damn, what I was thinking about that time? 2003-04-28 07:41:29 +00:00
aafemt
b3436b5cd7 STATUS -> ISC_STATUS 2003-04-10 06:32:58 +00:00
brodsom
42ef1314ec DSQL warning fixes. 2003-04-08 00:31:20 +00:00
dimitr
5e5803d6ff Fixed another bug with RECREATE VIEW. 2003-03-15 08:14:54 +00:00
dimitr
718af8c8c9 Fixed bug in RECREATE/ALTER VIEW. 2003-03-03 19:10:23 +00:00
brodsom
18ccbd5688 Put unused functions declaration and definition inside NOT_USED_OR_REPLACED ifdef. 2003-03-03 08:29:18 +00:00
brodsom
89702f3e88 Restore inlines 2003-02-25 00:05:06 +00:00
dimitr
6052221f37 Allowed access to both contexts in universal triggers. 2003-02-15 15:10:20 +00:00
hippoman
ad14320d0e * formated dsql.h comments to make Doxygen happy..
* changed DSQL_debug values as follow..
/*! \var unsigned DSQL_debug
    \brief Debug level

    0       No output
    1       Display output tree in PASS1_statment
    2       Display input tree in PASS1_statment
    4       Display ddl BLR
    8       Display BLR
    16      Display PASS1_rse input tree
    32      Display SQL input string
    64      Display BLR in dsql/prepare
    > 256   Display yacc parser output level = DSQL_level>>8
*/
2003-02-15 02:05:10 +00:00
brodsom
45efaaa7e0 Remove inline keyword. 2003-02-13 22:49:16 +00:00
dimitr
6e42d8c093 Fixed exception handling. 2003-02-13 12:01:28 +00:00
dimitr
f833079b2f CONST -> const 2003-02-13 09:33:26 +00:00
tamlin
bc383ff498 A bit const correctness added and some reinterpret_casts removed.
Changed DSQL's str to actually hold char.
2003-02-12 19:28:13 +00:00
dimitr
801ae673ec Rolled back previous commit. 2003-01-17 12:40:01 +00:00
dimitr
0474fdc4ca Restored compatibility with FB1. Index name is no longer assigned automatically for constraints. 2003-01-17 11:11:02 +00:00
dimitr
9dc68b4a7b Fixed bug with BREAK and partially implemented labels and LEAVE statement. 2002-12-18 15:01:50 +00:00
alexpeshkoff
90cdfbdaf5 Rename all links to why.cpp handle to struct why_hndl *
Warning! Don't commit parse.cpp and dsql.tab.h, because:
1. I use another YACC version.
2. They must be removed from CVS at all.

Execute STATEMENT also here
2002-12-16 15:38:26 +00:00
arnobrinkman
24fa36302d bugfix previous added code. correct way of retrieving length for
an variable inside SP/Trigger. This was needed for CASE expressions.
2002-12-16 00:48:53 +00:00
arnobrinkman
d8450be335 bugfix: length of text variables inside procs/triggers wasn't copied to descriptor structure. 2002-12-13 02:02:38 +00:00
eku
34e9391a97 Use the new macro FB_NELEM to calculate the number of elements in an array. 2002-12-02 09:45:52 +00:00
hippoman
9a8f0768b9 Changed struct fld and FLD to local module names 2002-11-30 17:45:02 +00:00
hippoman
7387e6fb70 changed nod,tra,req,trg,rel,ctx,prc struct names to local module names 2002-11-20 23:18:16 +00:00
hippoman
62cf7d7a88 change TRA,REQ,TRG,REL,CTX or PRC, to module local names. 2002-11-17 00:04:19 +00:00
alexpeshkoff
865b39fec1 Fixed bug with exception inside for/while loop in triggers 2002-11-13 15:57:29 +00:00
hippoman
c75a6d3019 * Changed NOD struct name to DSQL_NOD. 2002-11-11 19:08:37 +00:00
skidder
8e6622a20e Merging changes from skidder branch - explicit locks, savepoints, build system changes 2002-10-29 20:20:44 +00:00
dimitr
969fab91c8 BLOB subtypes are no longer ignored in views (expression fields only). 2002-10-06 10:51:54 +00:00
dimitr
4b1d91b887 Made it in-sync with the FB1 tree. 2002-10-02 13:24:03 +00:00
skidder
6d64014e57 Changed engine to store source file name/line number information for EVERY allocation when DEBUG_GDS_ALLOC is defined. All allocation should be done using FB_NEW or FB_NEW_RPT macros instead of keyword new since now 2002-09-25 17:12:16 +00:00
skidder
c74d8b6e7d Fixed cached metadata error which caused many DDL/DML statements to fail 2002-09-12 19:53:44 +00:00
skidder
7ca3274707 Fixed cached metadata error which caused many DDL/DML statements to fail 2002-09-12 19:51:50 +00:00
dimitr
8b131027ea More complete implementation of the INDEX subclause of a constraint declaration. 2002-09-06 07:51:33 +00:00
dimitr
cf6dddaf52 Fixed bug with wrong RDB$SYSTEM_FLAG values for the relation constraint triggers. 2002-09-05 11:48:40 +00:00
dimitr
c6e838a144 Changed syntax of the INDEX subclause of a constraint declaration,
now it looks as:
[USING [ASC[ENDING] | DESC[ENDING]] INDEX index]
2002-09-04 12:09:25 +00:00
dimitr
94fa429dc4 - allowed user-defined index names for PK/FK/UK constraints
- fixed ugly hardcoded name checks for primary/foreign keys
- implemented RECREATE VIEW statement
2002-09-01 15:44:45 +00:00
dimitr
b45eb004a2 Implemented CREATE OR ALTER statement for procedures/triggers/views. 2002-08-27 07:48:34 +00:00
dimitr
7922269845 1. BIGINT is now the only keyword for the 64-bit exact numerics and it's available
in dialect 3 only.
2. BREAK statement has been disabled in triggers (like EXIT) because of the known
   BLR limitations. I hope it can be safely used in stored procedures though, hence
   I'd prefer to have it officially documented.
3. More complete implementation of the GROUP BY clause. You can group by internal
   functions and have ability to use more complex grouping conditions than before.
   By Arno Brinkman.
4. Allowed declaring and defining local variables at the same time.
   By Claudio Valderrama.
   Syntax: declare [variable] <var_name> <var_type> [{= | default} <default_value>]
5. Allowed ordinals to be used in the GROUP BY clause (like ORDER BY).
   By Arno Brinkman.
   Example: select extract(month from order_date), sum(order_sum) from orders group by 1
6. The first approach to the ALTER VIEW statement. Only high-level implementation so far.
   A lot of work in dfw.epp, metd.epp, etc. still required.
   By Dmitry Yemanov.
2002-08-11 08:04:54 +00:00
dimitr
88edfc0714 Merging changes from fb1 (stage 2 - fixing porting errors). 2002-07-02 12:20:50 +00:00
skywalker
ae266af6d1 Merging changes from fb1. 2002-06-29 06:56:51 +00:00
dimitr
95281ccf25 1. New system variables - CONNECTION_ID and TRANSACTION_ID
2. Universal triggers
(parser changes are not very nice, but at least it works;
perhaps it should be polished up a bit later)
2002-06-14 12:07:20 +00:00
bellardo
60bf531271 Cleaning up unneeded setjmp/longjmp code. 2002-04-04 05:35:21 +00:00
tamlin
5ae485f0b5 cleaning up 2001-12-29 11:41:29 +00:00
tamlin
80f7fb6dd4 New C++ memory pool 2001-12-24 02:51:06 +00:00
skywalker
4c4bc9a95c Global changes for new Makefile and firebird2 compile on linux 2001-07-29 23:43:24 +00:00
bellardo
747d13c0d5 Changes to bring FB2 to c++ on *nix. 2001-07-12 05:46:06 +00:00
awharrison
baa3485651 read only databases are supported unconditionally in fb2 2001-07-10 17:35:13 +00:00
tamlin
9a776a604e First steps towards a C++ conversion. 2001-05-23 13:26:42 +00:00