diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 84621f24e3..63fa31b302 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,22 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-10-19 01:31 UTC+0600 April White (april users.sourceforge.net) + + harbour/doc/en-en/1stread.txt + ! initial version of a 'doc' formatted 'read-me' file + + harbour/doc/en-en/hashes.txt + ! initial version of hashes doc + * harbour/doc/cmpopt.txt + * harbour/doc/destruct.txt + * harbour/doc/en-en/array.txt + * harbour/doc/en-en/command.txt + * harbour/doc/en-en/dbstrux.txt + * harbour/doc/en-en/gnulice.txt + * harbour/doc/en-en/rddmisc.txt + * harbour/doc/en-en/set.txt + * harbour/doc/en-en/strotype.txt + * minor formatting + 2009-10-18 13:47 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/include/hbsocket.h * harbour/src/rtl/hbsocket.c @@ -69,9 +85,9 @@ 2009-10-16 13:54 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbtip/sendmail.prg * contrib/hbtip/mail.prg - ! Fixed encoding of subject, from, to, cc, bcc address lists, in some - places it was missing (cc, bcc, from), in some other places multiple - address support was missing (to, cc, bcc) from recent addition of + ! Fixed encoding of subject, from, to, cc, bcc address lists, in some + places it was missing (cc, bcc, from), in some other places multiple + address support was missing (to, cc, bcc) from recent addition of encoding support. + Added/Fixed support for human readable name component in e-mail addresses. + Using TIPMAIL:SETHEADER() in HB_SENDMAIL() to set above header components. @@ -80,16 +96,16 @@ - using space instead of tab when passing multiple addresses in headers. Haven't checked the standard, but I used to see space there. - Minor formatting, optimizations. - ! Minor tweaks to space and _ char in Q encoding. Now + ! Minor tweaks to space and _ char in Q encoding. Now they are both simply encoded. - ; Overall probably a rewrite would be the best in case of hbtip mailing, - and maybe not just for mailing. Code is full of strange tweaks, - redundancy and the class layout/communication is rather strange, f.e. - SMTP protocol data is passed via TURL:cFile variable from HB_SENDMAIL - to SMTP client class. Also charset support is just an aftertought so - user code needs close syncronisation with HB_SENDMAIL() and replicating + ; Overall probably a rewrite would be the best in case of hbtip mailing, + and maybe not just for mailing. Code is full of strange tweaks, + redundancy and the class layout/communication is rather strange, f.e. + SMTP protocol data is passed via TURL:cFile variable from HB_SENDMAIL + to SMTP client class. Also charset support is just an aftertought so + user code needs close syncronisation with HB_SENDMAIL() and replicating the same parameter parsing logic on multiple layers of code. - And I've probably just scratched the surface, f.e. I didn't test + And I've probably just scratched the surface, f.e. I didn't test attachments of HTML mails and probably several other options as well. ; Anyway please test. @@ -562,7 +578,7 @@ * contrib/hbqt/TQWizard.prg ! Auto generated sources by virtue of changes in hbqtgen.prg - [ Detailed analysis will follow in a separate thread ] + [ Detailed analysis will follow in a separate thread ] 2009-10-15 12:53 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/hbqt/qth/QIODevice.qth @@ -588,10 +604,10 @@ * src/rtl/fstemp.c * contrib/hbwin/win_prn2.c + Changed to use native instead of fixed ANSI version of win API calls. - ; Please review me, all these are critical low level functions, + ; Please review me, all these are critical low level functions, so any mistakes can be deadly. - ; TODO: Remaining dynamic versions, although maybe for dynamically - loaded win API functions it's better to stay with ANSI + ; TODO: Remaining dynamic versions, although maybe for dynamically + loaded win API functions it's better to stay with ANSI version for compatibility. 2009-10-15 17:03 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) @@ -628,7 +644,7 @@ * src/rtl/filesys.c * src/rtl/net.c + Changed to use native instead of fixed ANSI version of win API calls. - ; Please review me, all these are critical low level functions, + ; Please review me, all these are critical low level functions, so any mistakes can be deadly. ; TODO: There are still some forced ANSI calls in Harbour code: @@ -650,30 +666,30 @@ * utils/hbmk2/hbmk2.pt_BR.po * utils/hbmk2/hbmk2.hu_HU.po * utils/hbmk2/hbmk2.prg - + Added support for .d dependency files as source files in both + + Added support for .d dependency files as source files in both command line and .hbc sources= line. * Changed to use hash operators instead of functions in FindNewerHeaders(). - [ Probably hashes could be used much more in hbmk2 code to optimize + [ Probably hashes could be used much more in hbmk2 code to optimize some parts. ] * Synced the way hb_FGetDateTime() call success is handled. - + Added more provision for inctrypath handling in conjunction - with new dependency checking techniques. Still doesn't work + + Added more provision for inctrypath handling in conjunction + with new dependency checking techniques. Still doesn't work though. ; TOFIX: inctrypath with new dependency checking techniques. ; Please test .d support. - ; NOTE: As for different fallback techniques when .d files are used, - well, maybe this should be somehow signaled on a .d file basis, + ; NOTE: As for different fallback techniques when .d files are used, + well, maybe this should be somehow signaled on a .d file basis, inside the .d file, like continue to check, stop checking, etc. ; NOTE: There is a slight chance for regressions. 2009-10-15 10:03 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/rtl/filesys.c - ! hb_fsIsDrv() changed on win platform to use GetLogicalDrives() API + ! hb_fsIsDrv() changed on win platform to use GetLogicalDrives() API instead of GetDriveTypeA(). This should fix existing TOFIX. Thanks for Saulius Zrelskis for the suggestion. - I'd like to ask users to make side-by-side comparisons with + I'd like to ask users to make side-by-side comparisons with CA-Cl*pper to see if we're compatible. - ! Fixed hb_fsIsDrv() on non-win platforms to always set + ! Fixed hb_fsIsDrv() on non-win platforms to always set internal error to zero. CA-Cl*pper does the same. 2009-10-14 13:18 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) @@ -700,14 +716,14 @@ 2009-10-14 20:09 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/rtl/gtwvt/gtwvt.c - + Added _SET_OSCODEPAGE support for HB_GTINFO( HB_GTI_WINTITLE ) + + Added _SET_OSCODEPAGE support for HB_GTINFO( HB_GTI_WINTITLE ) and HB_GTINFO( HB_GTI_SELECTCOPY ). 2009-10-14 18:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbwin/win_misc.c * contrib/hbwin/wapi_shellapi.c - + Added _SET_OSCODEPAGE support for WAPI_SHELLEXECUTE() and - WIN_RUNDETACHED(). This may make these functions incompatible + + Added _SET_OSCODEPAGE support for WAPI_SHELLEXECUTE() and + WIN_RUNDETACHED(). This may make these functions incompatible in some situations. This clears to TODOs in source. * INSTALL @@ -724,7 +740,7 @@ 2009-10-14 13:43 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added 'gcc -MM' based C header dependency detection in -head=native mode. - Please note that it's slower than regular methods, so for projects + Please note that it's slower than regular methods, so for projects with many .c source files this setting may not be ideal. ! Added gccomf to a few more places where checking for gcc family. @@ -735,12 +751,12 @@ * Renamed header parsing mode 'real' to 'native'. Looks to be the final. ! Fixed minor error in prev: one debug message was always on. - ! Turn off native .prg header parsing in -xhb and -hb10 operating + ! Turn off native .prg header parsing in -xhb and -hb10 operating modes. - ; TODO: for .prg header parsing use one compiler call instead of + ; TODO: for .prg header parsing use one compiler call instead of one for each .prg. - ; TODO: with gcc family compilers use 'gcc -MM' mode for header - parsing. Probably needs separate control, as (at first) + ; TODO: with gcc family compilers use 'gcc -MM' mode for header + parsing. Probably needs separate control, as (at first) it seems to be much slower than current simple method. [DONE] @@ -887,30 +903,30 @@ 2009-10-13 20:02 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbwin/tests/testole.prg - + Added SOAP client call example. Based on the one sent to the + + Added SOAP client call example. Based on the one sent to the dev list by Marek Horodyski. 2009-10-13 17:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.pt_BR.po * utils/hbmk2/hbmk2.hu_HU.po * utils/hbmk2/hbmk2.prg - + Added support for new dependency checking method which uses - Harbour compiler to find out dependent files in incremental - mode. This of course only works for .prg sources, .c/rc source - dependency checking will continue to use simple method + + Added support for new dependency checking method which uses + Harbour compiler to find out dependent files in incremental + mode. This of course only works for .prg sources, .c/rc source + dependency checking will continue to use simple method which looks for '#include "' string. - Enable new mode with: -head=real cmdline or "head=real" .hbc - option. When this mode is active .c/.rc dependency checking + Enable new mode with: -head=real cmdline or "head=real" .hbc + option. When this mode is active .c/.rc dependency checking will be set to default 'partial' level. - NOTE: The activation method is tentative and will be finalized - after doing some functional and performance testing + NOTE: The activation method is tentative and will be finalized + after doing some functional and performance testing with this new feature. - ; TODO: Multimodule support in incremental mode isn't complete - and should be added. Currently all modules are considered - as equal dependencies of parent source. I'd appreciate if - this code would be peer-reviewed as I didn't make any + ; TODO: Multimodule support in incremental mode isn't complete + and should be added. Currently all modules are considered + as equal dependencies of parent source. I'd appreciate if + this code would be peer-reviewed as I didn't make any multimodule tests. - + 2009-10-13 16:47 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/src/compiler/hbmain.c * do not set TAB after last dependencies list generated by -sm @@ -952,7 +968,7 @@ * contrib/hbtip/encqp.prg ! Also encode ASC 127. - + Also encode a few more chars to make EBDIC systems happy + + Also encode a few more chars to make EBDIC systems happy in sync with RFC recommendation. * contrib/hbtip/client.prg diff --git a/harbour/doc/cmpopt.txt b/harbour/doc/cmpopt.txt index e1ff4c3b81..d5e86432b0 100644 --- a/harbour/doc/cmpopt.txt +++ b/harbour/doc/cmpopt.txt @@ -51,7 +51,7 @@ optimized at compile time: 2. Expresion optimization: Just like Clipper Harbour compiler can optimize some expresions if -arguments are well known and can be callculated at compile time: +arguments are well known and can be calculated at compile time: - Clipper compatible: @@ -158,14 +158,14 @@ arguments are well known and can be callculated at compile time: "" + => ( "" )-> => -> - In cases when result is miningless Harbour compiler can skip code + In cases when result is meaningless Harbour compiler can skip code for operation, i.e. for such line of .prg code: ( ) where result of operation is ignored Harbour reduces the code to: ( , ) -In Clipper in some places optiomization is not enabled, f.e. Clipper +In Clipper in some places optimization is not enabled, f.e. Clipper does not optimize in expressions like: : msg( ... ) Unlike Clipper Harbour tries to optimize all expressions. diff --git a/harbour/doc/destruct.txt b/harbour/doc/destruct.txt index b13064e2ee..6980c1f420 100644 --- a/harbour/doc/destruct.txt +++ b/harbour/doc/destruct.txt @@ -6,10 +6,10 @@ Destructors =========== Destructors are special methods executed just before the object -will be destroyed. It means that a programmer _has_to_ pay a special +will be destroyed. It means that a programmer _has_to_ pay special attention to the destructor's code and _NEVER_ store the reference to SELF object in external items. The piece of memory where -the instance of class (object) is held, will be freed when +the instance of class (object) is held will be freed when the destructor finishes, so any references to SELF object will point to uninitialized memory or memory allocated for other structures. Sooner or later (probably in a next GC pass) these @@ -25,7 +25,7 @@ General destructor activation Each object item has a reference counter. When it reaches 0 the object is destroyed and if it has destructor message then this message will be executed just before freeing the memory. After executing destructor HVM -checks if a programmer didn't store the reference to the object being +checks if a programmer didn't store the reference to the object being destroyed somewhere, and if he did then RT error is generated. It's possible to detect such situation by simply checking the reference counter. Such situation is not dangerous for HVM integrity because the @@ -60,7 +60,7 @@ This also cannot break HVM integrity for standard object items which are represented as arrays. But if the problem is inside cleanup function of a GC POINTER item, which has a structure unknown to HVM, then any further behavior can be unpredictible if a programmer, who created such pointer -items, doesn't support such situation himslef in his C code. It's a good +items, doesn't support such situation himslef in his C code. It's a good practice to add some type of marker to body of memory allocated by hb_gcAlloc() to detect bugs in .prg code destructors which may keep pointers to freed POINTER item (these could be destructors of differ diff --git a/harbour/doc/en-EN/1stread.txt b/harbour/doc/en-EN/1stread.txt new file mode 100644 index 0000000000..867533c523 --- /dev/null +++ b/harbour/doc/en-EN/1stread.txt @@ -0,0 +1,100 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Hash table type and functions + * + * Copyright 2009 April White + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +/* $DOC$ + * $TEMPLATE$ + * Document + * $NAME$ + * 1st document to read + * $CATEGORY$ + * Document + * $SUBCATEGORY$ + * + * $ONELINER$ + * A starters guide to Harbour + * $DESCRIPTION$ + * Welcome to Harbour + * ================== + * + * Clipper is a trademark of Computer Associates and will often be + * referred to as CA-Cl*pper within Harbour documents. Regardless of this + * variant, Clipper is recognized as Computer Associates' trademark. + * + * Harbour is a free software compiler for the xBase superset language often + * referred to as Clipper (the language that is implemented by the compiler + * Clipper). The goal of the Harbour project is to produce a cross platform + * CA-Cl*pper compatible compiler. + * + * The Harbour web site is at . If you + * have any problems with this copy of Harbour please visit our web site and + * ensure that you are using the latest release. + * + * If you have any questions about Harbour please be sure to read the FAQ + * . Also, please be sure to read the + * documentation that comes with Harbour, you should find it in the same + * directory in which you found this file. + * + * If you are reading this file as part of a source distribution of harbour you + * probably want to start by reading dirstruc.txt because this is your map to + * the harbour source directories. + * + * Harbour is a superset of Clipper and is backwards compatible with nearly + * 100% of all Clipper 5.2x or 5.3 code. Most Clipper S'87 code will also + * compile and run fine, but may require some modifications to run well. + * $PLATFORMS$ + * All + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ diff --git a/harbour/doc/en-EN/array.txt b/harbour/doc/en-EN/array.txt index a1756fe017..edd4efb280 100644 --- a/harbour/doc/en-EN/array.txt +++ b/harbour/doc/en-EN/array.txt @@ -46,13 +46,14 @@ * array. This depends, of course, on the data storage type of either * the array or the variable with the same name as the array. * $EXAMPLES$ - * FUNCTION Main() + * PROCEDURE Main() * LOCAL aArray:=Array(10) - * LOCAL x:=1 + * LOCAL x * FOR x:=1 to LEN(aArray) * aArray[x]:=Array(x) * NEXT - * Return Nil + * // Result is: { { NIL }, { NIL, NIL }, ... } + * RETURN * $STATUS$ * R * $COMPLIANCE$ @@ -82,8 +83,8 @@ * * Element to add to array * $RETURNS$ - * if specified , will return , otherwise this - * function returns a NIL value. + * if specified , will return , otherwise this + * function returns a NIL value. * $DESCRIPTION$ * This function dynamically increases the length of the array named * by one element and stores the value of to that @@ -93,10 +94,12 @@ * stored to an array's subscript position. * $EXAMPLES$ * LOCAL aArray:={} + * LOCAL x * AADD(aArray,10) * FOR x:=1 to 10 * AADD(aArray,x) * NEXT + * // Result is: { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } * $STATUS$ * R * $COMPLIANCE$ @@ -174,7 +177,7 @@ * array or any of the subscript values. * $EXAMPLES$ * LOCAL array:= {"Harbour", "is", "Supreme", "Power"} - * ? ATAIL(aArray) + * ? ATAIL(aArray) // Result is "Power" * $STATUS$ * R * $COMPLIANCE$ @@ -259,9 +262,9 @@ * become a NIL data type. * $EXAMPLES$ * LOCAL aArray - * aArray := { "Harbour","is","Power" } // Result: aArray is + * aArray := {"Harbour", "is", "Power"} * - * ADEL(aArray, 2) // Result: aArray is + * ADEL(aArray, 2) // Result: aArray is {"Harbour", "Power"} * $STATUS$ * R * $COMPLIANCE$ @@ -337,7 +340,7 @@ * $SYNTAX$ * ASCAN( , , [], [] ) --> nStoppedAt * $ARGUMENTS$ - * Name of array to be scanned. + * Array to be scanned. * * Expression to search for in * @@ -346,7 +349,7 @@ * Number of elements to scan with . * $RETURNS$ * A numeric value of subscript position where - * was found. + * was found, or 0 if is not found. * $DESCRIPTION$ * This function scan the content of array named for the * value of . The return value is the position in the array @@ -390,7 +393,7 @@ * $SUBCATEGORY$ * Array * $ONELINER$ - * Evaluated the subscript element of an array + * Evaluates the subscript element of an array * $SYNTAX$ * AEVAL(, , [], []) --> aArray * $ARGUMENTS$ @@ -398,7 +401,7 @@ * * Is a code block to evaluate for each element processed. * - * The beginning array element to evaluate. + * The beginning array element index to evaluate. * * The number of elements to process. * $RETURNS$ @@ -441,8 +444,7 @@ * $ONELINER$ * Copy elements from one array to another * $SYNTAX$ - * ACOPY( , , [], [], [] ) - * --> aTarget + * ACOPY( , , [], [], [] ) --> aTarget * $ARGUMENTS$ * is the array to copy elements from. * @@ -458,6 +460,7 @@ * an array pointer reference * $DESCRIPTION$ * This function copies array elements from to . + * * is the beginning element to be copied from ; * the default is 1. * @@ -474,7 +477,7 @@ * subdimensions will be copied from one array to the next. This must * be accomplished via the ACLONE() function. * - * Note + * Note: * If array is larger then , array elements will * start copying at and continue copying until the end * of array is reached. The ACOPY() function doesn't append @@ -482,7 +485,7 @@ * array remains constant. * $EXAMPLES$ * LOCAL nCount := 2, nStart := 1, aOne, aTwo - * aOne := {"HABOUR"," is ","POWER"} + * aOne := {"HARBOUR"," is ","POWER"} * aTwo := {"CLIPPER"," was ","POWER"} * ACOPY(aOne, aTwo, nStart, nCount) * $STATUS$ @@ -522,9 +525,11 @@ * $EXAMPLES$ * LOCAL aOne, aTwo * aOne := {"Harbour"," is ","POWER"} - * aTwo := ACLONE(aOne) // Result: aTwo is {1, 2, 3} - * aOne[1] := "The Harbour Compiler" // Result: aOne is {99, 2, 3} - * // aTwo is still {1, 2, 3} + * aTwo := ACLONE(aOne) // Result: aTwo is {"Harbour"," is ","POWER"} + * aOne[1] := "The Harbour Compiler" + * // Result: + * // aOne is {"The Harbour Compiler"," is ","POWER"} + * // aTwo is {"Harbour"," is ","POWER"} * $STATUS$ * R * $COMPLIANCE$ @@ -594,8 +599,7 @@ * $STATUS$ * R * $COMPLIANCE$ - * Codeblock calling frequency and order differs from CA-Cl*pper, since - * Harbour uses a different (faster) sorting algorithm (quicksort). + * C(arrayblock) * $FILES$ * Library is vm * $SEEALSO$ diff --git a/harbour/doc/en-EN/command.txt b/harbour/doc/en-EN/command.txt index 63c1fb53d3..07297b6204 100644 --- a/harbour/doc/en-EN/command.txt +++ b/harbour/doc/en-EN/command.txt @@ -21,7 +21,7 @@ * $CATEGORY$ * Class * $SUBCATEGORY$ - * + * Definition * $ONELINER$ * Define a Class for Object Oriented Programming * $SYNTAX$ @@ -467,13 +467,13 @@ * $CATEGORY$ * Class * $SUBCATEGORY$ - * + * Definition * $ONELINER$ * End the declaration of a class. * $SYNTAX$ * ENDCLASS * $ARGUMENTS$ - * + * (This statement has no arguments) * $DESCRIPTION$ * ENDCLASS marks the end of a class declaration. * It is usually followed by the class methods that are not INLINE. diff --git a/harbour/doc/en-EN/dbstrux.txt b/harbour/doc/en-EN/dbstrux.txt index 4429fb57e5..7e1d177529 100644 --- a/harbour/doc/en-EN/dbstrux.txt +++ b/harbour/doc/en-EN/dbstrux.txt @@ -285,8 +285,7 @@ * $ONELINER$ * Create structure extended file or use one to create new file * $SYNTAX$ - * __dbCreate( , [], [], [], - * [] ) --> lUsed + * __dbCreate( , [], [], [], [] ) --> lUsed * $ARGUMENTS$ * is the target file name to create and then open. (.dbf) * is the default extension if none is given. @@ -475,8 +474,7 @@ * $ONELINER$ * Create new database file from a structure extended file * $SYNTAX$ - * CREATE FROM [VIA ] [NEW] - * [ALIAS ] + * CREATE FROM [VIA ] [NEW] [ALIAS ] * $ARGUMENTS$ * is the target file name to create and then open. (.dbf) * is the default extension if none is given. It can be specified as diff --git a/harbour/doc/en-EN/gnulice.txt b/harbour/doc/en-EN/gnulice.txt index 7983223bd8..6462963cec 100644 --- a/harbour/doc/en-EN/gnulice.txt +++ b/harbour/doc/en-EN/gnulice.txt @@ -12,16 +12,15 @@ * $ONELINER$ * Gnu License File Part 1 * $DESCRIPTION$ - * - * GNU GENERAL PUBLIC LICENSE - * Version 2, June 1991 + * GNU GENERAL PUBLIC LICENSE + * Version 2, June 1991 * Copyright (C) 1989, 1991 Free Software Foundation, Inc. - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * * Everyone is permitted to copy and distribute verbatim copies - * of this license document, but changing it is not allowed. + * of this license document, but changing it is not allowed. * - * Preamble + * Preamble * * The licenses for most software are designed to take away your * freedom to share and change it. By contrast, the GNU General Public @@ -31,7 +30,7 @@ * Foundation's software and to any other program whose authors commit * to using it. (Some other Free Software Foundation software is * covered by the GNU Library General Public License instead.) - * You can apply it to your programs, too. + * You can apply it to your programs, too. * * When we speak of free software, we are referring to freedom, not * price. Our General Public Licenses are designed to make sure that @@ -39,42 +38,42 @@ * charge for this service if you wish), that you receive source code * or can get it if you want it, that you can change the software or * use pieces of it in new free programs; and that you know you can do - * these things. + * these things. * * To protect your rights, we need to make restrictions that forbid * anyone to deny you these rights or to ask you to surrender the * rights. These restrictions translate to certain responsibilities * for you if you distribute copies of the software, or if you modify - * it. + * it. * * For example, if you distribute copies of such a program, whether * gratis or for a fee, you must give the recipients all the rights * that you have. You must make sure that they, too, receive or can * get the source code. And you must show them these terms so they - * know their rights. + * know their rights. * * We protect your rights with two steps: (1) copyright the software, * and (2) offer you this license which gives you legal permission to - * copy, distribute and/or vmodify the software. + * copy, distribute and/or vmodify the software. * * Also, for each author's protection and ours, we want to make * certain that everyone understands that there is no warranty for * this free software. If the software is modified by someone else and * passed on, we want its recipients to know that what they have is * not the original, so that any problems introduced by others will - * not reflect on the original authors' reputations. + * not reflect on the original authors' reputations. * * Finally, any free program is threatened constantly by software * patents. We wish to avoid the danger that redistributors of a free * program will individually obtain patent licenses, in effect making * the program proprietary. To prevent this, we have made it clear * that any patent must be licensed for everyone's free use or not - * licensed at all. + * licensed at all. * * The precise terms and conditions for copying, distribution and - * modification follow. + * modification follow. * - * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * * 0. This License applies to any program or other work which contains * a notice placed by the copyright holder saying it may be @@ -91,7 +90,7 @@ * restricted, and the output from the Program is covered only if its * contents constitute a work based on the Program (independent of * having been made by running the Program). Whether that is true - * depends on what the Program does. + * depends on what the Program does. * * 1. You may copy and distribute verbatim copies of the Program's * source code as you receive it, in any medium, provided that you @@ -101,20 +100,20 @@ * warranty; and give any other recipients of the Program a copy of * this License along with the Program. You may charge a fee for the * physical act of transferring a copy, and you may at your option - * offer warranty protection in exchange for a fee. + * offer warranty protection in exchange for a fee. * * 2. You may modify your copy or copies of the Program or any portion * of it, thus forming a work based on the Program, and copy and * distribute such modifications or work under the terms of Section 1 - * above, provided that you also meet all of these conditions: + * above, provided that you also meet all of these conditions: * * a) You must cause the modified files to carry prominent notices - * stating that you changed the files and the date of any change. + * stating that you changed the files and the date of any change. * * b) You must cause any work that you distribute or publish, that * in whole or in part contains or is derived from the Program or * any part thereof, to be licensed as a whole at no charge to all - * third parties under the terms of this License. + * third parties under the terms of this License. * * c) If the modified program normally reads commands interactively * when run, you must cause it, when started running for such @@ -125,7 +124,7 @@ * under these conditions, and telling the user how to view a copy * of this License. (Exception: if the Program itself is interactive * but does not normally print such an announcement, your work based - * on the Program is not required to print an announcement.) + * on the Program is not required to print an announcement.) * * These requirements apply to the modified work as a whole. If * identifiable sections of that work are not derived from the @@ -136,40 +135,40 @@ * work based on the Program, the distribution of the whole must be on * the terms of this License, whose permissions for other licensees * extend to the entire whole, and thus to each and every part - * regardless of who wrote it. + * regardless of who wrote it. * * Thus, it is not the intent of this section to claim rights or * contest your rights to work written entirely by you; rather, the * intent is to exercise the right to control the distribution of - * derivative or collective works based on the Program. + * derivative or collective works based on the Program. * * In addition, mere aggregation of another work not based on the * Program with the Program (or with a work based on the Program) on a * volume of a storage or distribution medium does not bring the other - * work under the scope of this License. + * work under the scope of this License. * * 3. You may copy and distribute the Program (or a work based on it, * under Section 2) in object code or executable form under the terms * of Sections 1 and 2 above provided that you also do one of the - * following: + * following: * * a) Accompany it with the complete corresponding machine-readable * source code, which must be distributed under the terms of * Sections 1 and 2 above on a medium customarily used for software - * interchange; or, + * interchange; or, * * b) Accompany it with a written offer, valid for at least three * years, to give any third party, for a charge no more than your * cost of physically performing source distribution, a complete * machine-readable copy of the corresponding source code, to be * distributed under the terms of Sections 1 and 2 above on a medium - * customarily used for software interchange; or, + * customarily used for software interchange; or, * * c) Accompany it with the information you received as to the offer * to distribute corresponding source code. (This alternative is * allowed only for noncommercial distribution and only if you * received the program in object code or executable form with such - * an offer, in accord with Subsection b above.) + * an offer, in accord with Subsection b above.) * * The source code for a work means the preferred form of the work for * making modifications to it. For an executable work, complete source @@ -180,13 +179,13 @@ * anything that is normally distributed (in either source or binary * form) with the major components (compiler, kernel, and so on) of * the operating system on which the executable runs, unless that - * component itself accompanies the executable. + * component itself accompanies the executable. * * If distribution of executable or object code is made by offering * access to copy from a designated place, then offering equivalent * access to copy the source code from the same place counts as * distribution of the source code, even though third parties are not - * compelled to copy the source along with the object code. + * compelled to copy the source along with the object code. * * 4. You may not copy, modify, sublicense, or distribute the Program * except as expressly provided under this License. Any attempt @@ -194,7 +193,7 @@ * void, and will automatically terminate your rights under this * License. However, parties who have received copies, or rights, from * you under this License will not have their licenses terminated so - * long as such parties remain in full compliance. + * long as such parties remain in full compliance. * * 5. You are not required to accept this License, since you have not * signed it. However, nothing else grants you permission to modify or @@ -203,7 +202,7 @@ * modifying or distributing the Program (or any work based on the * Program), you indicate your acceptance of this License to do so, * and all its terms and conditions for copying, distributing or - * modifying the Program or works based on it. + * modifying the Program or works based on it. * * 6. Each time you redistribute the Program (or any work based on the * Program), the recipient automatically receives a license from the @@ -211,7 +210,7 @@ * to these terms and conditions. You may not impose any further * restrictions on the recipients' exercise of the rights granted * herein. You are not responsible for enforcing compliance by third - * parties to this License. + * parties to this License. * * $SEEALSO$ * GNU License Part 2 @@ -222,13 +221,12 @@ * $TEMPLATE$ * Document * $NAME$ - * GNU License Part 2 + * GNU License * $CATEGORY$ * Document * $ONELINER$ * Gnu License File Part 2 * $DESCRIPTION$ - * * 7. If, as a consequence of a court judgment or allegation of patent * infringement or for any other reason (not limited to patent * issues), conditions are imposed on you (whether by court order, @@ -241,12 +239,12 @@ * royalty-free redistribution of the Program by all those who receive * copies directly or indirectly through you, then the only way you * could satisfy both it and this License would be to refrain entirely - * from distribution of the Program. + * from distribution of the Program. * * If any portion of this section is held invalid or unenforceable * under any particular circumstance, the balance of the section is * intended to apply and the section as a whole is intended to apply - * in other circumstances. + * in other circumstances. * * It is not the purpose of this section to induce you to infringe any * patents or other property right claims or to contest validity of @@ -257,10 +255,10 @@ * through that system in reliance on consistent application of that * system; it is up to the author/donor to decide if he or she is * willing to distribute software through any other system and a - * licensee cannot impose that choice. + * licensee cannot impose that choice. * * This section is intended to make thoroughly clear what is believed - * to be a consequence of the rest of this License. + * to be a consequence of the rest of this License. * * 8. If the distribution and/or use of the Program is restricted in * certain countries either by patents or by copyrighted interfaces, @@ -269,12 +267,12 @@ * excluding those countries, so that distribution is permitted only * in or among countries not thus excluded. In such case, this License * incorporates the limitation as if written in the body of this - * License. + * License. * * 9. The Free Software Foundation may publish revised and/or new * versions of the General Public License from time to time. Such new * versions will be similar in spirit to the present version, but may - * differ in detail to address new problems or concerns. + * differ in detail to address new problems or concerns. * * Each version is given a distinguishing version number. If the * Program specifies a version number of this License which applies to @@ -282,7 +280,7 @@ * terms and conditions either of that version or of any later version * published by the Free Software Foundation. If the Program does not * specify a version number of this License, you may choose any - * version ever published by the Free Software Foundation. + * version ever published by the Free Software Foundation. * * 10. If you wish to incorporate parts of the Program into other free * programs whose distribution conditions are different, write to the @@ -291,9 +289,10 @@ * Foundation; we sometimes make exceptions for this. Our decision * will be guided by the two goals of preserving the free status of * all derivatives of our free software and of promoting the sharing - * and reuse of software generally. + * and reuse of software generally. + * + * NO WARRANTY * - * NO WARRANTY * 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO * WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE * LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS @@ -303,7 +302,7 @@ * FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND * PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE * DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR - * OR CORRECTION. + * OR CORRECTION. * * 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN * WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY @@ -314,84 +313,83 @@ * DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU * OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY * OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * - * END OF TERMS AND CONDITIONS + * END OF TERMS AND CONDITIONS * - * - * Appendix: How to Apply These Terms to Your New Programs + * Appendix: How to Apply These Terms to Your New Programs * * If you develop a new program, and you want it to be of the greatest * possible use to the public, the best way to achieve this is to make * it free software which everyone can redistribute and change under - * these terms. + * these terms. * * To do so, attach the following notices to the program. It is safest * to attach them to the start of each source file to most effectively * convey the exclusion of warranty; and each file should have at * least the "copyright" line and a pointer to where the full notice - * is found: + * is found: * * - * Copyright (C) yyyy - * + * Copyright (C) yyyy * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Also add information on how to contact you by electronic and paper * mail. If the program is interactive, make it output a short notice - * like this when it starts in an interactive mode: + * like this when it starts in an interactive mode: * * Gnomovision version 69, Copyright (C) year name of author * Gnomovision comes with ABSOLUTELY NO WARRANTY; for details * type `show w'. This is free software, and you are welcome * to redistribute it under certain conditions; type `show c' - * for details. + * for details. * * The hypothetical commands `show w' and `show c' should show the * appropriate parts of the General Public License. Of course, the * commands you use may be called something other than `show w' and * `show c'; they could even be mouse-clicks or menu items--whatever - * suits your program. + * suits your program. * * You should also get your employer (if you work as a programmer) or * your school, if any, to sign a "copyright disclaimer" for the - * program, if necessary. Here is a sample; alter the names: + * program, if necessary. Here is a sample; alter the names: * * Yoyodyne, Inc., hereby disclaims all copyright interest in the * program `Gnomovision' (which makes passes at compilers) written by - * James Hacker. + * James Hacker. * - * signature of Ty Coon, 1 April 1989 - * Ty Coon, President of Vice + * signature of Ty Coon, 1 April 1989 + * + * Ty Coon, President of Vice * * This General Public License does not permit incorporating your * program into proprietary programs. If your program is a subroutine * library, you may consider it more useful to permit linking * proprietary applications with the library. If this is what you want * to do, use the GNU Library General Public License instead of this - * License. + * License. * * - * FSF & GNU inquiries & questions to gnu@gnu.org. - * Copyright notice above. + * FSF & GNU inquiries & questions to gnu@gnu.org. + * Copyright notice above. * - * Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111, USA - * Updated: 3 Jan 2000 rms + * Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111, USA + * Updated: 3 Jan 2000 rms * * $SEEALSO$ * License,GNU License diff --git a/harbour/doc/en-EN/hashes.txt b/harbour/doc/en-EN/hashes.txt new file mode 100644 index 0000000000..e83440abca --- /dev/null +++ b/harbour/doc/en-EN/hashes.txt @@ -0,0 +1,1190 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Hash table type and functions + * + * Copyright 2009 April White + * www - http://www.harbour-project.org + * + * Based on the content of hashfunc.c and hashes.c + * Copyright 2007 Przemyslaw Czerpak + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HASH() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns a hash table + * $SYNTAX$ + * HB_HASH( [ , ], [ , ], ... ) -> hsTable + * $ARGUMENTS$ + * entry key; + * can be of type: number, date, datetime, string, pointer + * + * entry value; can be of type: block, string, numeric, date/datetime, logical, nil, pointer, array, hash table + * $RETURNS$ + * A hash table built from the initial key/value pairs + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HHASKEY() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Determines whether a hash table has an entry with a give key + * $SYNTAX$ + * HB_HHASKEY( , ) -> lExists + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a key value to be queried for; + * can be of type: number, date, datetime, string, pointer + * $RETURNS$ + * A logical value indicating whether the key exists within the hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HPOS() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Locates the index of a key within a hash table + * $SYNTAX$ + * HB_HPOS( , ) -> nPosition + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * key for which its position is to be determined; + * can be of type: number, date, datetime, string, pointer + * $RETURNS$ + * A integer number being the index position of the key within the hash table. + * + * TODO: what is the return value if the key does not exist? zero (0)? RTE? + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HGET() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns a hash value + * $SYNTAX$ + * HB_HGET( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * key to be retrieve from the hash table; + * can be of type: number, date, datetime, string, pointer + * $RETURNS$ + * Either the value within the hash table for the given key. + * + * An array access error occurs of the key is not found + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HGETDEF() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns a hash value, or a default value if the key is not present + * $SYNTAX$ + * HB_HGETDEF( , , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * key to be retrieve from the hash table; + * can be of type: number, date, datetime, string, pointer + * + * a default value to be returned if the + * hash table does not contain the key + * $RETURNS$ + * Either the value within the hash table for the given key, + * or the default value. + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSET() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets a hash value + * $SYNTAX$ + * HB_HSET( , , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * the key of the entry to be set; + * can be of type: number, date, datetime, string, pointer + * + * the entry value + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HDEL() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Removes a key/value pair from a hash table + * $SYNTAX$ + * HB_HDEL( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * key to be removed from the hash table; + * can be of type: number, date, datetime, string, pointer + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HKEYAT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Gets a hash table key at a given position + * $SYNTAX$ + * HB_HKEYAT( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * the position of an entry within the hash table that will + * be returned + * $RETURNS$ + * The key at the given position of the hash table; + * the type will be one: number, date, datetime, string, pointer + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HVALUEAT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Gets/sets a hash value at a given position + * $SYNTAX$ + * HB_HVALUEAT( , , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * the position of an entry within the hash table that will + * be returned + * + * a new value to be assigned to the hash table at the given + * position + * $RETURNS$ + * The existing value, or the new value if it is given + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HPAIRAT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns a two-dimensional array of a hash table entry key/value pair + * $SYNTAX$ + * HB_HPAIRAT( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * the position of an entry within the hash table that will + * be returned + * $RETURNS$ + * A two-dimensional array of the key/value pair entry of the hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HDELAT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Removes an entry from a hash table based on its index position + * $SYNTAX$ + * HB_HDELAT( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * the position of an entry within the hash table that will + * be deleted + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HKEYS() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns an array of the keys of a hash table + * $SYNTAX$ + * HB_HKEYS( ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * $RETURNS$ + * An array of all the hash table keys + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HVALUES() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns an array of the values of a hash table + * $SYNTAX$ + * HB_HVALUES( ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * $RETURNS$ + * An array of all the hash values + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HFILL() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Fills a hash table with a value + * $SYNTAX$ + * HB_HFILL( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * fill value; can be of type: block, string, numeric, date/datetime, logical, nil, pointer, array, hash table + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HCLONE() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Creates a copy of a hash table + * $SYNTAX$ + * HB_HCLONE( ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * $RETURNS$ + * A cloned copy of the hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HCOPY() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Adds entries from the source hash table to the destination hash table + * $SYNTAX$ + * HB_HCOPY( , , [], [] ) -> + * $ARGUMENTS$ + * a destination hash table, created by HB_HASH() + * + * a source hash table, created by HB_HASH() + * + * starting index, defaults to 1 if omitted + * + * counter, defaults to (length) - is omitted + * $RETURNS$ + * The destination hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HMERGE() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Merges a source hash table into a destination hash table + * $SYNTAX$ + * HB_HMERGE( , , | ) -> + * $ARGUMENTS$ + * a destination hash table, created by HB_HASH() + * + * a source hash table, created by HB_HASH() + * + * a code block that will be evaluated for each entry within the + * source hash table; the code block will be passed the entry key, value and + * position; if the code block returns a true value, the entry will be added to + * the destination hash table + * + * the position of an entry within the source hash table that will + * be appended to the destination hash table + * + * TODO: the source code passes either a number or HB_HASH_UNION; research this + * $RETURNS$ + * The destination hash table with the contents of the source hash table merged + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HEVAL() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Evaluate a code block across the contents of a hash table + * $SYNTAX$ + * HB_HEVAL( , , [], [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * code block to be evaluated + * + * starting index, defaults to 1 if omitted + * + * counter, defaults to (length) - is omitted + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * The code block is evaluated for every hash table entry starting at + * for items. + * + * The code block is passed the entry key, value, and numeric position + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSCAN() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Scans a hash table + * $SYNTAX$ + * HB_HSCAN( , , [], [, [] ) -> nPosition + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * to be located within the hash table + * + * starting index, defaults to 1 if omitted + * + * counter, defaults to (length) - is omitted + * + * logical valuye indicating whether the comparision + * is to be be exact or not + * $RETURNS$ + * The position of the located value within the hash table, or zero (0) if not found. + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSORT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Reorganizes the internal list of the hash table to be sorted + * $SYNTAX$ + * HB_HSORT( ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * $RETURNS$ + * The hash table sorted + * + * TODO: is the original table altered? + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HCASEMATCH() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'case match' flag for the hash table + * $SYNTAX$ + * HB_HCASEMATCH( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'case match' flag of the hash table + * $RETURNS$ + * The previous value of the 'case match' flag + * $DESCRIPTION$ + * This function is equivalent to HB_HSETCASEMATCH() but it returns + * the old flag value rather than the hash table + * $EXAMPLES$ + * LOCAL hsTable, lFlag + * hsTable := HB_HASH( "one", 1, "two", 2 ) + * // turn 'case match' on for a new hash table, storing ol flag + * lFlag := HB_HCASEMATCH( hsTable, .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HSETCASEMATCH() + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HBINARY() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'binary' flag for the hash table + * $SYNTAX$ + * HB_HBINARY( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'binary' flag of the hash table + * $RETURNS$ + * The previous value of the 'binary' flag + * $DESCRIPTION$ + * This function is equivalent to HB_HBINARY() but it returns + * the old flag value rather than the hash table + * $EXAMPLES$ + * LOCAL hsTable, lFlag + * hsTable := HB_HASH( "one", 1, "two", 2 ) + * // turn 'binary' on for a new hash table, storing ol flag + * lFlag := HB_HBINARY( hsTable, .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HSETBINARY() + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HAUTOADD() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'auto add' flag for the hash table + * $SYNTAX$ + * HB_HAUTOADD( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'auto add' flag of the hash table + * $RETURNS$ + * The previous value of the 'auto add' flag + * $DESCRIPTION$ + * This function is equivalent to HB_HAUTOADD() but it returns + * the old flag value rather than the hash table + * $EXAMPLES$ + * LOCAL hsTable, lFlag + * hsTable := HB_HASH( "one", 1, "two", 2 ) + * // turn 'auto add' on for a new hash table, storing ol flag + * lFlag := HB_HAUTOADD( hsTable, .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HSETAUTOADD() + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Procedure + * $NAME$ + * HB_HALLOCATE() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Preallocates a hash table + * $SYNTAX$ + * HB_HALLOCATE( , ) + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * number of items to preallocate in the hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HDEFAULT() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Returns/sets a default value for a hash table. + * $SYNTAX$ + * HB_HDEFAULT( , ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * + * $RETURNS$ + * The previous default value assigned to the hash table + * $DESCRIPTION$ + * + * $EXAMPLES$ + * + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * TODO: locate and list those methods that use this feature + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSETAUTOADD() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'auto add' flag for the hash table + * $SYNTAX$ + * HB_HSETAUTOADD( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'auto add' flag of the hash table + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * This function is equivalent to HB_HAUTOADD() but it returns + * the passed hash table rather than the old flag value + * $EXAMPLES$ + * LOCAL hsTable + * // turn 'auto add' on for a new hash table + * hsTable := HB_HSETAUTOADD( HB_HASH( "one", 1, "two", 2 ), .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HAUTOADD(),HB_HSETBINARY(),HB_HSETCASEMATCH() + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSETCASEMATCH() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'case match' flag for the hash table + * $SYNTAX$ + * HB_HSETCASEMATCH( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'case match' flag of the hash table + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * This function is equivalent to HB_HCASEMATCH() but it returns + * the passed hash table rather than the old flag value + * $EXAMPLES$ + * LOCAL hsTable + * // turn 'case match' on for a new hash table + * hsTable := HB_HSETCASEMATCH( HB_HASH( "one", 1, "two", 2 ), .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HCASEMATCH(),HB_HSETAUTOADD(),HB_HSETBINARY + * $END$ + */ + +/* $DOC$ + * $TEMPLATE$ + * Function + * $NAME$ + * HB_HSETBINARY() + * $CATEGORY$ + * API + * $SUBCATEGORY$ + * Hash table + * $ONELINER$ + * Sets the 'binary' flag for the hash table + * $SYNTAX$ + * HB_HSETBINARY( , [] ) -> + * $ARGUMENTS$ + * a hash table, created by HB_HASH() + * + * a logical value indicating to turn on or off + * the 'binary' flag of the hash table + * $RETURNS$ + * The hash table + * $DESCRIPTION$ + * This function is equivalent to HB_HBINARY() but it returns + * the passed hash table rather than the old flag value + * $EXAMPLES$ + * LOCAL hsTable + * // turn 'binary' on for a new hash table + * hsTable := HB_HSETBINARY( HB_HASH( "one", 1, "two", 2 ), .T. ) + * $TESTS$ + * + * $STATUS$ + * R + * $COMPLIANCE$ + * H + * $PLATFORMS$ + * + * $FILES$ + * + * $SEEALSO$ + * HB_HBINARY(),HB_HSETAUTOADD(),HB_HSETCASEMATCH + * $END$ + */ diff --git a/harbour/doc/en-EN/rddmisc.txt b/harbour/doc/en-EN/rddmisc.txt index 712db0fe33..4df886a08d 100644 --- a/harbour/doc/en-EN/rddmisc.txt +++ b/harbour/doc/en-EN/rddmisc.txt @@ -192,7 +192,7 @@ * $SYNTAX$ * ZAP * $ARGUMENTS$ - * + * (This command has no arguments) * $DESCRIPTION$ * This command removes all of the records from the database in the * current work area. This operation also updates any index file in @@ -227,7 +227,7 @@ * $SYNTAX$ * DELETED() --> lDeleted * $ARGUMENTS$ - * + * (This command has no arguments) * $RETURNS$ * DELETED() return a logical true (.T.) or false (.F.). * $DESCRIPTION$ @@ -268,7 +268,7 @@ * $SYNTAX$ * EOF() --> * $ARGUMENTS$ - * + * (This command has no arguments) * $RETURNS$ * A logical true (.T.) or false (.F.) * $DESCRIPTION$ @@ -543,7 +543,7 @@ * $SYNTAX$ * FOUND() --> lSuccess * $ARGUMENTS$ - * None. + * (This function has no arguments) * $RETURNS$ * A logical true (.T.) is successful; otherwise, false (.F.) * $DESCRIPTION$ @@ -659,7 +659,7 @@ * $SYNTAX$ * LUPDATE() --> dModification * $ARGUMENTS$ - * None + * (This function has no arguments) * $RETURNS$ * The date of the last modification. * $DESCRIPTION$ @@ -751,7 +751,7 @@ * $SYNTAX$ * RECCOUNT()* | LASTREC() --> nRecords * $ARGUMENTS$ - * None. + * (This function has no arguments) * $RETURNS$ * The number of records * $DESCRIPTION$* @@ -793,12 +793,13 @@ * $SYNTAX$ * RECNO() --> Identity * $ARGUMENTS$ - * None. + * (This function has no arguments) * $RETURNS$ - * RECNO() The record number or indentity + * RECNO() The record number or identity * $DESCRIPTION$ * This function returns the position of the record pointer in the * currently selected ot designated work area. + * * If the database file is empty and if the RDD is the traditional .dbf * file, the value of this function will be 1. * $EXAMPLES$ @@ -834,7 +835,7 @@ * $SYNTAX$ * RECSIZE() --> nBytes * $ARGUMENTS$ - * None. + * (This function has no arguments) * $RETURNS$ * The record size. * $DESCRIPTION$ @@ -875,7 +876,7 @@ * $SYNTAX$ * RLOCK() --> lSuccess * $ARGUMENTS$ - * None + * (This function has no arguments) * $RETURNS$ * RLOCK() True (.T.) if record lock is successful; otherwise, it * returns false (.F.). @@ -973,7 +974,7 @@ * $SYNTAX$ * USED() --> lDbfOpen * $ARGUMENTS$ - * None. + * (This function has no arguments) * $RETURNS$ * True is a database is Used;otherwise False * $DESCRIPTION$ @@ -1017,7 +1018,7 @@ * $SYNTAX$ * PACK * $ARGUMENTS$ - * + * (This command has no arguments) * $DESCRIPTION$ * This command removes records that were marked for deletion from the * currently selected database. This command does not pack the contents diff --git a/harbour/doc/en-EN/set.txt b/harbour/doc/en-EN/set.txt index bfef296b0c..cd7befbceb 100644 --- a/harbour/doc/en-EN/set.txt +++ b/harbour/doc/en-EN/set.txt @@ -72,7 +72,7 @@ * $ARGUMENTS$ * Set Number * - * Any expression to assing a value to the seting + * Any expression to assign a value to the setting * * Logical expression * @@ -915,7 +915,7 @@ * This command toggles the highlighted bars in a @...PROMPT command * to wrap around in a bottom-to-top and top-to-bottom manner. If the * value of the logical expression is a logical false (.F.), - * the wrapping mode is set OFF;otherwise,it is set ON. + * the wrapping mode is set OFF; otherwise,it is set ON. * $EXAMPLES$ * See Tests/menutest.prg * $STATUS$ @@ -1127,11 +1127,11 @@ * $SUBCATEGORY$ * Environment * $ONELINER$ - * Assings a date format or chooses a predefined date data set. + * Assigns a date format or chooses a predefined date data set. * $SYNTAX$ * SET DATE FORMAT [TO] - * SET DATE [TO] [ ANSI / BRITISH / FRENCH / GERMAN / ITALIAN / JAPAN - * / USA / AMERICAN] + * + * SET DATE [TO] [ANSI / BRITISH / FRENCH / GERMAN / ITALIAN / JAPAN / USA / AMERICAN] * $ARGUMENTS$ * Keyword for date format * $DESCRIPTION$ @@ -1179,7 +1179,7 @@ * $SUBCATEGORY$ * Environment * $ONELINER$ - * Specifie a base year for interpreting dates + * Specify a base year for interpreting dates * $SYNTAX$ * SET EPOCH TO * $ARGUMENTS$ @@ -1219,7 +1219,7 @@ * a logical true (.T.), FIXED will be turned ON; otherwise it will be * turned OFF. * - * When SET DECIMALS OFF is used, the follow rules apply to the number + * When SET DECIMALS OFF is used, the following rules apply to the number * of decimal placed displayed. * * @@ -1262,7 +1262,7 @@ * SET PRINTER () * SET PRINTER TO [] [ADDITIVE] * $ARGUMENTS$ - * Logical condition by which to toggle the printer + * Logical condition by which to toggle the printer * * A device name or an alternate name * $DESCRIPTION$ @@ -1324,7 +1324,7 @@ * or the <-> DEVOUT() function. * * If is a logical true (.T.),the console will be turned - * ON;otherwise, the console will be turned off. + * ON; otherwise, the console will be turned off. * $EXAMPLES$ * SET console on * ? DATE() @@ -1400,7 +1400,7 @@ * less than the last printed row. Finally, if used in conjunction with * the @...GET commands, the values for the GETs will all be ignored. * $EXAMPLES$ - * SET DEVICE TO SCRENN + * SET DEVICE TO SCREEN * ? 25141251/362 * SET DEVICE TO PRINTER * SET PRINTER TO LPT1 diff --git a/harbour/doc/en-EN/strotype.txt b/harbour/doc/en-EN/strotype.txt index 28256c08aa..b2ab9f51fc 100644 --- a/harbour/doc/en-EN/strotype.txt +++ b/harbour/doc/en-EN/strotype.txt @@ -67,20 +67,20 @@ * Harbour also offers a hybrid mode, where it can report such type * mismatch problems, even without requiring the programmer to declare * the type of variables. This feature, is referred to as Adaptive Type - * Checking. The programmer, is not required to make any changes in his - * code, to take advantage of this feature. All of the above 3 errors + * Checking. The programmer is not required to make any changes in his + * code to take advantage of this feature. All of the above 3 errors * would have been reported just as effectively as if the programmer * Strong Typed (declared) Var1. Harbour would have been able to report - * such problems at compile time,because the assignment Var1 := "A" + * such problems at compile time because the assignment Var1 := "A" * implied that Var1 is of type CHARACTER,until it will be assigned - * another value. Therefore Harbour will "remember" that Var1 "adapted" + * another value. Therefore Harbour will "remember" that Var1 "adapted" * type CHARACTER, and thus the subsequent multiplication Var1 * 3, will * be reported as an error, as soon as you attempt to compile such code. * * The nice aspect of this hybrid mode, is that unlike Strong Typed * Variables,you don't have to declare the type, so no code changes * are need, the Type instead is assumed by implication (type of the - * assigned value). The other benefit, is that it is completely ok to + * assigned value). The other benefit, is that it is completely OK to * assign a new value of different type, any time, to such undeclared * (variant) variable. As soon as we assign a new type, the Compiler * will than protect us from using the Variable in an incompatible