summaryrefslogtreecommitdiff
path: root/docs/misc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/misc')
-rwxr-xr-xdocs/misc/AutoUpdate.txt54
-rwxr-xr-xdocs/misc/DirectoryStructure.txt32
-rwxr-xr-xdocs/misc/ExpressionNotes.odsbin0 -> 20662 bytes
-rwxr-xr-xdocs/misc/Expressions.txt13
-rwxr-xr-xdocs/misc/FileTypeByte.txt53
-rwxr-xr-xdocs/misc/IndexNotes.odsbin0 -> 23172 bytes
-rwxr-xr-xdocs/misc/RealDelete.txt88
-rwxr-xr-xdocs/misc/Release.txt34
-rwxr-xr-xdocs/misc/Versions.txt30
-rwxr-xr-xdocs/misc/xbTmpFiles.txt12
10 files changed, 316 insertions, 0 deletions
diff --git a/docs/misc/AutoUpdate.txt b/docs/misc/AutoUpdate.txt
new file mode 100755
index 0000000..909bc18
--- /dev/null
+++ b/docs/misc/AutoUpdate.txt
@@ -0,0 +1,54 @@
+
+Auto Update Design / Functionality
+
+
+Auto update functionality in the library is used to automatically update
+records in tables, when the user moves off a particular record without
+explicitly posting an update for the new data updates.
+
+The auto Update logic defaults to ON, and there is nothing that the
+end user needs to worry about.
+
+However, if it is desired to change the behavior of the library, the
+Auto Update logic can be turned off.
+
+There are two levels to the Auto Update logic.
+
+The first level is the DBMS level, which controls how all tables are
+handled, if the Auto Update logic is not over ridden at the table level.
+
+The second level is the table level. The DBMS Auto Update logic can
+be over ridden at the table level.
+
+
+For the DBMS level settings, see methods:
+ xBase::GetDefaultAutoUpdate
+ xBase::SetDefaultAutoUpdate
+
+At the DBMS level, there are two settings
+ xbFalse = AutoUpdate is off
+ xbTrue = AutoUpdate is on
+
+For the Table level settings, see methods:
+ xbDbf::SetAutoUpdate
+ xbDbf::GetAutoUpdate
+
+At the table level, there are three settings
+ -1 = Use the DBMS setting (this is the default)
+ 0 = Do not use Auto Update on this table
+ 1 = Use Auto Update on this table.
+
+These seetings would be for a more advanceed implementation of
+XBase64. For the most part, you can ignore these settings and
+use the defaults that are already set in the library and you should
+be OK.
+
+
+This document is missing some functions
+
+x:DisableDefaultAutoLock()
+x:EnableDefaultAutoLock()
+
+
+
+
diff --git a/docs/misc/DirectoryStructure.txt b/docs/misc/DirectoryStructure.txt
new file mode 100755
index 0000000..9a7ba66
--- /dev/null
+++ b/docs/misc/DirectoryStructure.txt
@@ -0,0 +1,32 @@
+
+6/14/14 - The directory structure was updated with xb64 V4.0.0
+
+
+
+xb64
+ xb64 (Source Tree)
+ include
+ xb64
+ examples
+ utils
+
+ docs
+ html
+ license
+ misc
+
+ Linux (Build Tree for Linux)
+ bin
+ Processor
+
+ Windows (Build Tree for Windows)
+ bin
+ Processor
+
+ Mac (Build Tree for Mac)
+ bin
+ Processor
+
+ OtherPlatforms (Build tree for other platforms)
+ bin
+ Processor \ No newline at end of file
diff --git a/docs/misc/ExpressionNotes.ods b/docs/misc/ExpressionNotes.ods
new file mode 100755
index 0000000..6817de2
--- /dev/null
+++ b/docs/misc/ExpressionNotes.ods
Binary files differ
diff --git a/docs/misc/Expressions.txt b/docs/misc/Expressions.txt
new file mode 100755
index 0000000..d6eed0d
--- /dev/null
+++ b/docs/misc/Expressions.txt
@@ -0,0 +1,13 @@
+
+
+
+Expression Date Logic
+
+
+ DATE - DATE returns number
+ DATE - Number returns date
+ DATE + Number returns date
+ DATE -= Number returns date
+ DATE += Number returns date
+ DATE ++ returns date
+ DATE -- returns date \ No newline at end of file
diff --git a/docs/misc/FileTypeByte.txt b/docs/misc/FileTypeByte.txt
new file mode 100755
index 0000000..11d4823
--- /dev/null
+++ b/docs/misc/FileTypeByte.txt
@@ -0,0 +1,53 @@
+
+
+
+Valid dBASE for Windows table file, bits 0-2 indicate version number: 3 for dBASE Level 5, 4 for dBASE Level 7.
+Bit 3 and bit 7 indicate presence of a dBASE IV or dBASE for Windows memo file;
+bits 4-6 indicate the presence of a dBASE IV SQL table;
+bit 7 indicates the presence of any .DBT memo file (either a dBASE III PLUS type or a dBASE IV or dBASE for Windows memo file).
+
+
+The first byte of the DBF file determines the xbase file version
+
+76543210
+00000000
+
+| - True if any memo file
+ | - True if Version 4 memo file
+ || - True for both V3 and V4 files
+
+
+
+
+00000011 - Could be a version III or version IV file, lib defaults to IV
+10000011 - Version III with memo
+10001011 - Version IV with memo
+
+
+
+Logic for checking for which version
+
+ 3 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 not set, then V3
+ 4 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 set
+ 5 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 set
+>=7 bit 4 set
+
+
+
+ bit 0 bit 3 bit 4 bit 5 bit 6
+V III Optional 0 0 1 1 No field type F
+V IV Optional if bit0 then 1 0 1 1 Supports field type F
+V V Optional if bit0 then 1 0 1 1 Supports field type F
+
+V VII ? ? 1 0 0
+
+
+
+pseudocode logic
+
+if not bit 4, and bit 5 and bit 6
+{
+ if V4 compiled in, if not (bit0 and not bit3) return V4
+ else
+ if V3 compiled in and not bit3, and not prod mdx, return V3
+} \ No newline at end of file
diff --git a/docs/misc/IndexNotes.ods b/docs/misc/IndexNotes.ods
new file mode 100755
index 0000000..0b3cabc
--- /dev/null
+++ b/docs/misc/IndexNotes.ods
Binary files differ
diff --git a/docs/misc/RealDelete.txt b/docs/misc/RealDelete.txt
new file mode 100755
index 0000000..7770afc
--- /dev/null
+++ b/docs/misc/RealDelete.txt
@@ -0,0 +1,88 @@
+
+
+Earlier versions of the library included an Xbase specific functin called "Real Delete"
+
+The analysis is as follows:
+
+Updates to xbdbf.h and xbdbf.cpp
+
+#ifdef XB_REAL_DELETE
+ ...
+#endif
+
+Functions included:
+
+ RealDeleteOn() Turns on RealDelete
+ RealDeleteOff() Turns off RealDelete
+ GetRealDelete() Returns the status of RealDelete
+
+Narrative:
+
+This should be done before creating a database with xbDbf::CreateDatabase() and
+thereafter before opening a database with xbDbfCreateDatabase()
+
+
+You can not turn on real deletes once a database has been created and records added
+
+
+In the Table header
+bytes 12-15 - FirstFreeRec;
+bytes 16-19 - RealNumRecs
+
+
+Updates to the following methods:
+WriteHeader()
+ReadHeader()
+
+The first four bytes of the deleted record is the record number to the next
+deleted record in the chain
+
+Append Record will pull next record from the chain and attempt to use that
+field, otherwise it will append a new record
+
+GetFirstRecord will skip over deleted records looking for the first record
+which is not deleted
+
+GetLastRecord will skip backwards to the next previous undeleted record
+
+GetPrevRecord skips backwards to the the next previous undeleted record
+
+DeleteRecord
+ -Deletes the memo data
+ - Adds the record to the front of the free chain
+
+UndeleteRecord
+ - Always returns XB_INVALID_RECORD
+
+PackDatafiles
+ - Deleted Records are skipped
+
+NoOfRecords
+ - Returns no of records not deleted
+
+PhysicalNoOfRecords()
+ - Return NoOfRecs - actual number of records in the file
+
+
+
+Conclusions:
+
+From a campatibility standpoint:
+
+ This setup will only work on the earlier version of the Xbase file format as this would
+ be library specific code.
+
+ Also, once past Dbase V3, the bytes used in the header file are used by Dbase 4,5,7
+
+
+Decision:
+
+ In an effort to make the library as portable as possible moving forward, a decision was made to
+ leave this code out of the basic library. To add this code in the future, a new class can be created
+ using the xbDbf class as a base class, and override the methods mentioned above.
+
+
+
+
+
+
diff --git a/docs/misc/Release.txt b/docs/misc/Release.txt
new file mode 100755
index 0000000..f73af11
--- /dev/null
+++ b/docs/misc/Release.txt
@@ -0,0 +1,34 @@
+
+xb64 4.0.0 Release notes
+
+ List of updates with xbase 4.0.0
+ 1) Converted from automake/autoconf to cmake
+ 2) Updated xbstring logic
+ 3) Created test programs for using in cmake
+ 4) Tested each method in the following environments
+ A) Linux Slackware 64 bit
+ B) Linux Slackware 32 bit
+ C) Mac OSX Lion, 64 bit build
+ D) Windows 64 bit build
+ E) Windows 32 bit build
+ F) Borland 32 bit build
+ 5) Updated the Get/Put field methods so they all have a
+ common look and feel. All the get/put methods now return
+ a return code indicating success/failure.
+ 6) Abstracted file i/o activity into xbFile class - used to
+ isolate the platform specifics out of the main dbms class
+ and improve portability. Utilized 64 bit functions where
+ possible
+ 7) Reworked the Lock logic, tested on various platforms.
+ Mac OSX supports on locking on NFS shares only.
+ Mac does not support locking on SMB shares - OS limitation.
+ Unix based file systems don't support file lock functionality,
+ if using in combination with sdoftware like DBase, Dbase supports
+ exclusive locking which is not supported on native Linux file systems
+ 8) Converted integer field names and checked for correct field lengths
+ xbInt16 16 bit integer
+ xbUInt16 16 bit unsigned integer
+ xbInt32 32 bit integer
+ xbUInt32 32 bit unsigned integer
+ xbInt64 64 bit integer
+ xbUInt64 64 bit unsigned integer
diff --git a/docs/misc/Versions.txt b/docs/misc/Versions.txt
new file mode 100755
index 0000000..2977341
--- /dev/null
+++ b/docs/misc/Versions.txt
@@ -0,0 +1,30 @@
+
+
+
+
+Differences between Dbase III and Dbase IV
+
+ Dbase IV adds field type "F" Float
+ Dbase IV adds a more sophisticated DBT memo file, utilizes logic to reclaim disk space on memo field updates
+ Dbase IV adds support for MDX multi tag indices
+
+
+
+
+Version III Field Types
+
+ C Char
+ N Numeric
+ D Date
+ M Memo
+ L Logical
+
+
+Version IV Field Types
+
+ C Char
+ N Numeric
+ D Date
+ M Memo
+ L Logical
+ F Float (Similar to numeric) \ No newline at end of file
diff --git a/docs/misc/xbTmpFiles.txt b/docs/misc/xbTmpFiles.txt
new file mode 100755
index 0000000..f81bee9
--- /dev/null
+++ b/docs/misc/xbTmpFiles.txt
@@ -0,0 +1,12 @@
+
+
+At times, the Xbase64 library will create temporary work files with the
+following naming pattern: xbtmpNNN.xxx Where NNN is a sequential
+number and xxx is either dbf, dbt, ndx, mdx.
+
+These files should be automatically deleted by the library when
+the task is complete. However, if the program crashes in a particular
+step, the temp files might not be cleaned up automatically.
+
+If you run into these files, and they have an older timestamp on them,
+it is safe to delete them. \ No newline at end of file