[Libreoffice-commits] .: connectivity/source

Christina Rossmanith crossmanith at kemper.freedesktop.org
Mon Feb 14 13:54:37 PST 2011


 connectivity/source/drivers/calc/Cservices.cxx     |    9 
 connectivity/source/drivers/dbase/DIndex.cxx       |   54 ++---
 connectivity/source/drivers/dbase/DIndexIter.cxx   |   23 +-
 connectivity/source/drivers/dbase/DNoException.cxx |   31 +--
 connectivity/source/drivers/dbase/DTable.cxx       |  185 ++++++++++----------
 connectivity/source/drivers/dbase/Dservices.cxx    |    9 
 connectivity/source/drivers/dbase/dindexnode.cxx   |  191 +++++++++------------
 7 files changed, 237 insertions(+), 265 deletions(-)

New commits:
commit efb522f0fcef1e513670ecaa4b0fe3cc26efc9df
Author: Rob Snelders <programming at ertai.nl>
Date:   Mon Feb 14 22:54:01 2011 +0100

    translated comments (10-16/54)

diff --git a/connectivity/source/drivers/calc/Cservices.cxx b/connectivity/source/drivers/calc/Cservices.cxx
index 482cd0d..6fe2f9b 100644
--- a/connectivity/source/drivers/calc/Cservices.cxx
+++ b/connectivity/source/drivers/calc/Cservices.cxx
@@ -50,11 +50,8 @@ typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
         );
 
 //***************************************************************************************
-//
-// Die vorgeschriebene C-Api muss erfuellt werden!
-// Sie besteht aus drei Funktionen, die von dem Modul exportiert werden muessen.
-//
-
+// The prescribed C-Api must be met!
+// It consists of three functions, which must be exported by the module.
 //---------------------------------------------------------------------------------------
 void REGISTER_PROVIDER(
         const OUString& aServiceImplName,
@@ -73,7 +70,6 @@ void REGISTER_PROVIDER(
         xNewKey->createKey(Services[i]);
 }
 
-
 //---------------------------------------------------------------------------------------
 struct ProviderRequest
 {
@@ -113,7 +109,6 @@ struct ProviderRequest
 };
 
 //---------------------------------------------------------------------------------------
-
 extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
 component_getImplementationEnvironment(
                 const sal_Char	**ppEnvTypeName,
diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx
index 866c77f..14d7f22 100644
--- a/connectivity/source/drivers/dbase/DIndex.cxx
+++ b/connectivity/source/drivers/dbase/DIndex.cxx
@@ -189,8 +189,8 @@ OIndexIterator* ODbaseIndex::createIterator(OBoolOperator* pOp,
 BOOL ODbaseIndex::ConvertToKey(ONDXKey* rKey, sal_uInt32 nRec, const ORowSetValue& rValue)
 {
     OSL_ENSURE(m_pFileStream,"FileStream is not opened!");
-    // Sucht ein bestimmten Wert im Index
-    // Wenn der Index Unique ist, interssiert der Key nicht, sonst ja
+    // Search a specific value in Index
+    // If the Index is unique, the key doesn't matter
     try
     {
         if (m_aHeader.db_keytype == 0)
@@ -218,8 +218,8 @@ BOOL ODbaseIndex::Find(sal_uInt32 nRec, const ORowSetValue& rValue)
 {
     openIndexFile();
     OSL_ENSURE(m_pFileStream,"FileStream is not opened!");
-    // Sucht ein bestimmten Wert im Index
-    // Wenn der Index Unique ist, interssiert der Key nicht, sonst ja
+    // Search a specific value in Index
+    // If the Index is unique, the key doesn't matter
     ONDXKey aKey;
     return ConvertToKey(&aKey, nRec, rValue) && getRoot()->Find(aKey);
 }
@@ -231,14 +231,14 @@ BOOL ODbaseIndex::Insert(sal_uInt32 nRec, const ORowSetValue& rValue)
     OSL_ENSURE(m_pFileStream,"FileStream is not opened!");
     ONDXKey aKey;
 
-    // Existiert der Wert bereits
-    // Find immer verwenden um das aktuelle Blatt zu bestimmen
+    // Does the value already exist
+    // Use Find() always to determine the actual leaf
     if (!ConvertToKey(&aKey, nRec, rValue) || (getRoot()->Find(aKey) && isUnique()))
         return FALSE;
 
     ONDXNode aNewNode(aKey);
 
-    // einfuegen in das aktuelle Blatt
+    // insert in the current leaf
     if (!m_aCurLeaf.Is())
         return FALSE;
 
@@ -266,15 +266,15 @@ BOOL ODbaseIndex::Delete(sal_uInt32 nRec, const ORowSetValue& rValue)
 {
     openIndexFile();
     OSL_ENSURE(m_pFileStream,"FileStream is not opened!");
-    // Existiert der Wert bereits
-    // Find immer verwenden um das aktuelle Blatt zu bestimmen
+    // Does the value already exist
+    // Always use Find() to determine the actual leaf
     ONDXKey aKey;
     if (!ConvertToKey(&aKey, nRec, rValue) || !getRoot()->Find(aKey))
         return FALSE;
 
     ONDXNode aNewNode(aKey);
 
-    // einfuegen in das aktuelle Blatt
+    // insert in the current leaf
     if (!m_aCurLeaf.Is())
         return FALSE;
 #if OSL_DEBUG_LEVEL > 1
@@ -292,7 +292,7 @@ void ODbaseIndex::Collect(ONDXPage* pPage)
 //------------------------------------------------------------------
 void ODbaseIndex::Release(BOOL bSave)
 {
-    // Freigeben der Indexressourcen
+    // Release the Index-recources
     m_bUseCollector = FALSE;
 
     if (m_aCurLeaf.Is())
@@ -301,19 +301,19 @@ void ODbaseIndex::Release(BOOL bSave)
         m_aCurLeaf.Clear();
     }
 
-    // Wurzel freigeben
+    // Release the root
     if (m_aRoot.Is())
     {
         m_aRoot->Release(bSave);
         m_aRoot.Clear();
     }
-    // alle Referenzen freigeben, bevor der FileStream geschlossen wird
+    // Release all references, before the FileStream will be closed
     for (ULONG i = 0; i < m_aCollector.size(); i++)
         m_aCollector[i]->QueryDelete();
 
     m_aCollector.clear();
 
-    // Header modifiziert ?
+    // Header modified?
     if (bSave && (m_aHeader.db_rootpage != m_nRootPage ||
         m_aHeader.db_pagecount != m_nPageCount))
     {
@@ -386,7 +386,7 @@ SvStream& connectivity::dbase::operator << (SvStream &rStream, ODbaseIndex& rInd
 //------------------------------------------------------------------
 void ODbaseIndex::createINFEntry()
 {
-    // inf Datei abgleichen
+    // synchronize inf-file
     String sEntry = m_Name;
     sEntry += String::CreateFromAscii(".ndx");
 
@@ -432,8 +432,7 @@ BOOL ODbaseIndex::DropImpl()
             m_pTable->getConnection()->throwGenericSQLException(STR_COULD_NOT_DELETE_INDEX,*m_pTable);
     }
 
-    // InfDatei abgleichen
-
+    // synchronize inf-file
     ::rtl::OUString sCfgFile(m_pTable->getConnection()->getURL());
     sCfgFile += OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DELIMITER);
     sCfgFile += m_pTable->getName();
@@ -453,7 +452,7 @@ BOOL ODbaseIndex::DropImpl()
     // delete entries from the inf file
     for (USHORT nKey = 0; nKey < nKeyCnt; nKey++)
     {
-        // Verweist der Key auf ein Indexfile?...
+        // References the Key to an Index-file?
         aKeyName = aInfFile.GetKeyName( nKey );
         if (aKeyName.Copy(0,3) == "NDX")
         {
@@ -477,7 +476,7 @@ void ODbaseIndex::impl_killFileAndthrowError_throw(sal_uInt16 _nErrorId,const ::
 //------------------------------------------------------------------
 BOOL ODbaseIndex::CreateImpl()
 {
-    // Anlegen des Index
+    // Create the Index
     const ::rtl::OUString sFile = getCompletePath();
     if(UCBContentHelper::Exists(sFile))
     {
@@ -487,13 +486,13 @@ BOOL ODbaseIndex::CreateImpl()
          ) );
         ::dbtools::throwGenericSQLException( sError, *this );
     }
-    // Index ist nur einstufig
+    // Index comprises only one column
     if (m_pColumns->getCount() > 1)
         m_pTable->getConnection()->throwGenericSQLException(STR_ONL_ONE_COLUMN_PER_INDEX,*this);
 
     Reference<XFastPropertySet> xCol(m_pColumns->getByIndex(0),UNO_QUERY);
 
-    // ist die Spalte schon indiziert ?
+    // Is the column already indexed?
     if ( !xCol.is() )
         ::dbtools::throwFunctionSequenceException(*this);
 
@@ -512,7 +511,7 @@ BOOL ODbaseIndex::CreateImpl()
     m_pFileStream->SetBufferSize(PAGE_SIZE);
     m_pFileStream->SetFiller('\0');
 
-    // Zunaechst muss das Ergebnis sortiert sein
+    // firstly the result must be sorted
     utl::SharedUNOComponent<XStatement> xStmt;
     utl::SharedUNOComponent<XResultSet> xSet;
     String aName;
@@ -548,7 +547,7 @@ BOOL ODbaseIndex::CreateImpl()
         impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX,sFile);
     }
 
-    // Setzen der Headerinfo
+    // Set the header info
     memset(&m_aHeader,0,sizeof(m_aHeader));
     sal_Int32 nType = 0;
     ::rtl::Reference<OSQLColumns> aCols = m_pTable->getTableColumns();
@@ -572,9 +571,8 @@ BOOL ODbaseIndex::CreateImpl()
     m_aHeader.db_unique  = m_IsUnique ? 1: 0;
     m_aHeader.db_keyrec  = m_aHeader.db_keylen + 8;
 
-    // modifizierung am Header werden ueber Unterschiede zw. HeaderInfo und nRootPage
-    // bzw. nPageCout erkannt
-
+    // modifications of the header are detected by differences between
+    // the HeaderInfo and nRootPage or nPageCount respectively
     m_nRootPage = 1;
     m_nPageCount = 2;
 
@@ -600,11 +598,11 @@ BOOL ODbaseIndex::CreateImpl()
         ORowSetValue	atmpValue=ORowSetValue();
         ONDXKey aKey(atmpValue, nType, 0);
         ONDXKey aInsertKey(atmpValue, nType, 0);
-        // Erzeugen der Indexstruktur
+        // Create the index structure
         while (xSet->next())
         {
             ORowSetValue aValue(m_aHeader.db_keytype ? ORowSetValue(xRow->getDouble(1)) : ORowSetValue(xRow->getString(1)));
-            // ueberpruefen auf doppelten eintrag
+            // checking for duplicate entries
             if (m_IsUnique && m_nCurNode != NODE_NOTFOUND)
             {
                 aKey.setValue(aValue);
diff --git a/connectivity/source/drivers/dbase/DIndexIter.cxx b/connectivity/source/drivers/dbase/DIndexIter.cxx
index 965196f..e6ec2ed 100644
--- a/connectivity/source/drivers/dbase/DIndexIter.cxx
+++ b/connectivity/source/drivers/dbase/DIndexIter.cxx
@@ -69,7 +69,7 @@ ULONG OIndexIterator::Find(BOOL bFirst)
 
     if (!m_pOperator)
     {
-        // Vorbereitung , auf kleinstes Element positionieren
+        // Preparation, position on the smallest element
         if (bFirst)
         {
             ONDXPage* pPage = m_aRoot;
@@ -97,18 +97,17 @@ ULONG OIndexIterator::Find(BOOL bFirst)
 //------------------------------------------------------------------
 ONDXKey* OIndexIterator::GetFirstKey(ONDXPage* pPage, const OOperand& rKey)
 {
-    // sucht den vorgegeben key
-    // Besonderheit: gelangt der Algorithmus ans Ende
-    // wird immer die aktuelle Seite und die Knotenposition vermerkt
-    // auf die die Bedingung <= zutrifft
-    // dieses findet beim Insert besondere Beachtung
+    // searches a given key
+    // Speciality: At the end of the algorithm 
+    // the actual page and the position of the node which fulfil the
+    // '<='-condition are saved. this is considered for inserts.
     //	ONDXIndex* m_pIndex = GetNDXIndex();
     OOp_COMPARE aTempOp(SQLFilterOperator::GREATER);
     USHORT i = 0;
 
     if (pPage->IsLeaf())
     {
-        // im blatt wird die eigentliche Operation ausgefuehrt, sonst die temp. (>)
+        // in the leaf the actual operation is run, otherwise temp. (>)
         while (i < pPage->Count() && !m_pOperator->operate(&((*pPage)[i]).GetKey(),&rKey))
                i++;
     }
@@ -120,7 +119,7 @@ ONDXKey* OIndexIterator::GetFirstKey(ONDXPage* pPage, const OOperand& rKey)
     ONDXKey* pFoundKey = NULL;
     if (!pPage->IsLeaf())
     {
-        // weiter absteigen
+        // descend further
         ONDXPagePtr aPage = (i==0) ? pPage->GetChild(m_pIndex)
                                      : ((*pPage)[i-1]).GetChild(m_pIndex, pPage);
         pFoundKey = aPage.Is() ? GetFirstKey(aPage, rKey) : NULL;
@@ -149,7 +148,7 @@ ULONG OIndexIterator::GetCompare(BOOL bFirst)
 
     if (bFirst)
     {
-        // Vorbereitung , auf kleinstes Element positionieren
+        // Preparation, position on the smallest element
         ONDXPage* pPage = m_aRoot;
         switch (ePredicateType)
         {
@@ -278,7 +277,7 @@ ONDXKey* OIndexIterator::GetNextKey()
     if (m_aCurLeaf.Is() && ((++m_nCurNode) >= m_aCurLeaf->Count()))
     {
         ONDXPage* pPage = m_aCurLeaf;
-        // naechste Seite suchen
+        // search next page
         while (pPage)
         {
             ONDXPage* pParentPage = pPage->GetParent();
@@ -286,7 +285,7 @@ ONDXKey* OIndexIterator::GetNextKey()
             {
                 USHORT nPos = pParentPage->Search(pPage);
                 if (nPos != pParentPage->Count() - 1)
-                {	// Seite gefunden
+                {	// page found 
                     pPage = (*pParentPage)[nPos+1].GetChild(m_pIndex,pParentPage);
                     break;
                 }
@@ -294,7 +293,7 @@ ONDXKey* OIndexIterator::GetNextKey()
             pPage = pParentPage;
         }
 
-        // jetzt wieder zum Blatt
+        // now go on with leaf
         while (pPage && !pPage->IsLeaf())
             pPage = pPage->GetChild(m_pIndex);
 
diff --git a/connectivity/source/drivers/dbase/DNoException.cxx b/connectivity/source/drivers/dbase/DNoException.cxx
index 55c06f2..95bc3f7 100644
--- a/connectivity/source/drivers/dbase/DNoException.cxx
+++ b/connectivity/source/drivers/dbase/DNoException.cxx
@@ -47,7 +47,7 @@ sal_Bool ODbaseTable::seekRow(IResultSetHelper::Movement eCursorPosition, sal_In
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::seekRow" );
     // ----------------------------------------------------------
-    // Positionierung vorbereiten:
+    // Prepare positioning:
     OSL_ENSURE(m_pFileStream,"ODbaseTable::seekRow: FileStream is NULL!");
 
     sal_uInt32  nNumberOfRecords = (sal_uInt32)m_aHeader.db_anz;
@@ -118,7 +118,7 @@ Error:
                 m_nFilePos = 0;
             break;
         case IResultSetHelper::BOOKMARK:
-            m_nFilePos = nTempPos;	 // vorherige Position
+            m_nFilePos = nTempPos;	 // last position
     }
     return sal_False;
 
@@ -135,12 +135,12 @@ BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
     m_pMemoStream->Seek(nBlockNo * m_aMemoHeader.db_size);
     switch (m_aMemoHeader.db_typ)
     {
-        case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
+        case MemodBaseIII: // dBase III-Memofeld, ends with Ctrl-Z
         {
             const char cEOF = (char) 0x1a;
             ByteString aBStr;
             static char aBuf[514];
-            aBuf[512] = 0;			// sonst kann der Zufall uebel mitspielen
+            aBuf[512] = 0;			// to prevent a random value
             BOOL bReady = sal_False;
 
             do
@@ -162,7 +162,7 @@ BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
 
         } break;
         case MemoFoxPro:
-        case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+        case MemodBaseIV: // dBase IV-Memofeld with the length specification
         {
             char sHeader[4];
             m_pMemoStream->Read(sHeader,4);
@@ -224,7 +224,7 @@ void ODbaseTable::AllocBuffer()
         m_pBuffer = NULL;
     }
 
-    // Falls noch kein Puffer vorhanden: allozieren:
+    // If no buffer available: allocate
     if (m_pBuffer == NULL && nSize)
     {
         m_nBufferSize = nSize;
@@ -237,7 +237,7 @@ BOOL ODbaseTable::WriteBuffer()
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::WriteBuffer" );
     OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
 
-    // Auf gewuenschten Record positionieren:
+    // Position on the desired record:
     long nPos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
     m_pFileStream->Seek(nPos);
     return m_pFileStream->Write((char*) m_pBuffer, m_aHeader.db_slng) > 0;
@@ -257,7 +257,7 @@ sal_Int32 ODbaseTable::getCurrentLastPos() const
 void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ONDXNode::Read" );
-    rStream >> aKey.nRecord; // schluessel
+    rStream >> aKey.nRecord; // key
 
     if (rIndex.getHeader().db_keytype)
     {
@@ -292,9 +292,9 @@ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ONDXNode::Write" );
     const ODbaseIndex& rIndex = rPage.GetIndex();
     if (!rIndex.isUnique() || rPage.IsLeaf())
-        rStream << (sal_uInt32)aKey.nRecord; // schluessel
+        rStream << (sal_uInt32)aKey.nRecord; // key
     else
-        rStream << (sal_uInt32)0;	// schluessel
+        rStream << (sal_uInt32)0;	// key
 
     if (rIndex.getHeader().db_keytype) // double
     {
@@ -373,7 +373,7 @@ StringCompare ONDXKey::Compare(const ONDXKey& rKey) const
         eResult = (m > n) ? COMPARE_GREATER : (n == m) ? COMPARE_EQUAL : COMPARE_LESS;
     }
 
-    // Record vergleich, wenn Index !Unique
+    // Record comparison, if index !Unique
     if (eResult == COMPARE_EQUAL && nRecord && rKey.nRecord)
         eResult = (nRecord > rKey.nRecord) ? COMPARE_GREATER :
                   (nRecord == rKey.nRecord) ? COMPARE_EQUAL : COMPARE_LESS;
@@ -457,7 +457,7 @@ SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
 //------------------------------------------------------------------
 SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& rPage)
 {
-    // Seite existiert noch nicht
+    // Page does not yet exist
     ULONG nSize = (rPage.GetPagePos() + 1) * 512;
     if (nSize > rStream.Seek(STREAM_SEEK_TO_END))
     {
@@ -547,7 +547,7 @@ BOOL ONDXPage::IsFull() const
 USHORT ONDXPage::Search(const ONDXKey& rSearch)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ONDXPage::Search" );
-    // binare Suche spaeter
+    // binary search afterwards
     USHORT i = 0xFFFF;
     while (++i < Count())
         if ((*this)[i].GetKey() == rSearch)
@@ -565,12 +565,11 @@ USHORT ONDXPage::Search(const ONDXPage* pPage)
         if (((*this)[i]).GetChild() == pPage)
             break;
 
-    // wenn nicht gefunden, dann wird davon ausgegangen, dass die Seite selbst
-    // auf die Page zeigt
+    // if not found, then we assume, that the page points to the page (???)
     return (i < Count()) ? i : NODE_NOTFOUND;
 }
 // -----------------------------------------------------------------------------
-// laeuft rekursiv
+// runs recursively
 void ONDXPage::SearchAndReplace(const ONDXKey& rSearch,
                                   ONDXKey& rReplace)
 {
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index 901da8c..ea67326 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -205,7 +205,7 @@ void ODbaseTable::readHeader()
     OSL_ENSURE(m_pFileStream,"No Stream available!");
     if(!m_pFileStream)
         return;
-    m_pFileStream->RefreshBuffer(); // sicherstellen, dass die Kopfinformationen tatsaechlich neu gelesen werden
+    m_pFileStream->RefreshBuffer(); // Make sure, that the header information actually is read again
     m_pFileStream->Seek(STREAM_SEEK_TO_BEGIN);
 
     BYTE nType=0;
@@ -229,14 +229,14 @@ void ODbaseTable::readHeader()
     if(ERRCODE_NONE != m_pFileStream->GetErrorCode())
         throwInvalidDbaseFormat();
 
-    if ( ( ( m_aHeader.db_kopf - 1 ) / 32 - 1 ) <= 0 ) // anzahl felder
+    if ( ( ( m_aHeader.db_kopf - 1 ) / 32 - 1 ) <= 0 ) // number of fields
     {
         // no dbase file
         throwInvalidDbaseFormat();
     }
     else
     {
-        // Konsistenzpruefung des Header:
+        // Consistency check of the header:
         m_aHeader.db_typ = (DBFType)nType;
         switch (m_aHeader.db_typ)
         {
@@ -306,7 +306,7 @@ void ODbaseTable::fillColumns()
     m_aPrecisions.clear();
     m_aScales.clear();
 
-    // Anzahl Felder:
+    // Number of fields:
     const sal_Int32 nFieldCount = (m_aHeader.db_kopf - 1) / 32 - 1;
     OSL_ENSURE(nFieldCount,"No columns in table!");
 
@@ -357,10 +357,10 @@ OSL_TRACE("column type: %c",aDBFColumn.db_typ);
                     aTypeName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NUMERIC"));
                 eType = DataType::DECIMAL;
 
-                // Bei numerischen Feldern werden zwei Zeichen mehr geschrieben, als die Precision der Spaltenbeschreibung eigentlich
-                // angibt, um Platz fuer das eventuelle Vorzeichen und das Komma zu haben. Das muss ich jetzt aber wieder rausrechnen.
+                // for numeric fields two characters more are written, than the precision of the column description predescribes,
+                // to keep room for the possible sign and the comma. This has to be considered...
                 nPrecision = SvDbaseConverter::ConvertPrecisionToOdbc(nPrecision,aDBFColumn.db_dez);
-                    // leider gilt das eben Gesagte nicht fuer aeltere Versionen ....
+                // This is not true for older versions ....
                 break;
             case 'L':
                 eType = DataType::BIT;
@@ -506,17 +506,17 @@ void ODbaseTable::construct()
         readHeader();
         if (HasMemoFields())
         {
-            // Memo-Dateinamen bilden (.DBT):
-            // nyi: Unschoen fuer Unix und Mac!
+        // Create Memo-Filename (.DBT):
+        // nyi: Ugly for Unix and Mac!
 
             if ( m_aHeader.db_typ == FoxProMemo || VisualFoxPro == m_aHeader.db_typ || VisualFoxProAuto == m_aHeader.db_typ ) // foxpro uses another extension
                 aURL.SetExtension(String::CreateFromAscii("fpt"));
             else
                 aURL.SetExtension(String::CreateFromAscii("dbt"));
 
-            // Wenn die Memodatei nicht gefunden wird, werden die Daten trotzdem angezeigt
-            // allerdings koennen keine Updates durchgefuehrt werden
-            // jedoch die Operation wird ausgefuehrt
+            // If the memo file isn't found, the data will be displayed anyhow.
+            // However, updates can't be done
+            // but the operation is executed
             m_pMemoStream = createStream_simpleError( aURL.GetMainURL(INetURLObject::NO_DECODE), STREAM_READWRITE | STREAM_NOCREATE | STREAM_SHARE_DENYWRITE);
             if ( !m_pMemoStream )
             {
@@ -533,19 +533,19 @@ void ODbaseTable::construct()
         if ( m_aHeader.db_anz == 0 && ((nFileSize-m_aHeader.db_kopf)/m_aHeader.db_slng) > 0) // seems to be empty or someone wrote bullshit into the dbase file
             m_aHeader.db_anz = ((nFileSize-m_aHeader.db_kopf)/m_aHeader.db_slng);
 
-        // Buffersize abhaengig von der Filegroesse
+        // Buffersize dependent on the file size
         m_pFileStream->SetBufferSize(nFileSize > 1000000 ? 32768 :
                                   nFileSize > 100000 ? 16384 :
                                   nFileSize > 10000 ? 4096 : 1024);
 
         if (m_pMemoStream)
         {
-            // Puffer genau auf Laenge eines Satzes stellen
+            // set the buffer extactly to the length of a record
             m_pMemoStream->Seek(STREAM_SEEK_TO_END);
             nFileSize = m_pMemoStream->Tell();
             m_pMemoStream->Seek(STREAM_SEEK_TO_BEGIN);
 
-            // Buffersize abhaengig von der Filegroesse
+            // Buffersize dependent on the file size
             m_pMemoStream->SetBufferSize(nFileSize > 1000000 ? 32768 :
                                           nFileSize > 100000 ? 16384 :
                                           nFileSize > 10000 ? 4096 :
@@ -560,23 +560,22 @@ BOOL ODbaseTable::ReadMemoHeader()
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::ReadMemoHeader" );
     m_pMemoStream->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
-    m_pMemoStream->RefreshBuffer();			// sicherstellen das die Kopfinformationen tatsaechlich neu gelesen werden
+    m_pMemoStream->RefreshBuffer();			// make sure that the header information is actually read again
     m_pMemoStream->Seek(0L);
 
     (*m_pMemoStream) >> m_aMemoHeader.db_next;
     switch (m_aHeader.db_typ)
     {
-        case dBaseIIIMemo:  // dBase III: feste Blockgroesse
+        case dBaseIIIMemo:  // dBase III: fixed block size
         case dBaseIVMemo:
-            // manchmal wird aber auch dBase3 dBase4 Memo zugeordnet
+            // sometimes dBase3 is attached to dBase4 memo
             m_pMemoStream->Seek(20L);
             (*m_pMemoStream) >> m_aMemoHeader.db_size;
-            if (m_aMemoHeader.db_size > 1 && m_aMemoHeader.db_size != 512)	// 1 steht auch fuer dBase 3
+            if (m_aMemoHeader.db_size > 1 && m_aMemoHeader.db_size != 512)	// 1 is also for dBase 3
                 m_aMemoHeader.db_typ  = MemodBaseIV;
             else if (m_aMemoHeader.db_size > 1 && m_aMemoHeader.db_size == 512)
             {
-                // nun gibt es noch manche Dateien, die verwenden eine Groessenangabe,
-                // sind aber dennoch dBase Dateien
+                // There are files using size specification, though they are dBase-files
                 char sHeader[4];
                 m_pMemoStream->Seek(m_aMemoHeader.db_size);
                 m_pMemoStream->Read(sHeader,4);
@@ -686,9 +685,9 @@ void ODbaseTable::refreshIndexes()
 
         for (USHORT nKey = 0; nKey < nKeyCnt; nKey++)
         {
-            // Verweist der Key auf ein Indexfile?...
+            // Refences the key an index-file?
             aKeyName = aInfFile.GetKeyName( nKey );
-            //...wenn ja, Indexliste der Tabelle hinzufuegen
+            //...if yes, add the index list of the table
             if (aKeyName.Copy(0,3) == ByteString("NDX") )
             {
                 aIndexName = aInfFile.ReadKey(aKeyName);
@@ -786,12 +785,12 @@ sal_Int64 ODbaseTable::getSomething( const Sequence< sal_Int8 > & rId ) throw (R
 sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, sal_Bool _bUseTableDefs,sal_Bool bRetrieveData)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::fetchRow" );
-    // Einlesen der Daten
+    // Read the data
     BOOL bIsCurRecordDeleted = ((char)m_pBuffer[0] == '*') ? TRUE : sal_False;
 
     // only read the bookmark
 
-    // Satz als geloescht markieren
+    // Mark record as deleted
     _rRow->setDeleted(bIsCurRecordDeleted);
     *(_rRow->get())[0] = m_nFilePos;
 
@@ -799,13 +798,13 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
         return TRUE;
 
     sal_Size nByteOffset = 1;
-    // Felder:
+    // Fields:
     OSQLColumns::Vector::const_iterator aIter = _rCols.get().begin();
     OSQLColumns::Vector::const_iterator aEnd  = _rCols.get().end();
     const sal_Size nCount = _rRow->get().size();
     for (sal_Size i = 1; aIter != aEnd && nByteOffset <= m_nBufferSize && i < nCount;++aIter, i++)
     {
-        // Laengen je nach Datentyp:
+        // Lengths depending on data type:
         sal_Int32 nLen = 0;
         sal_Int32 nType = 0;
         if(_bUseTableDefs)
@@ -834,7 +833,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
                     nLen = SvDbaseConverter::ConvertPrecisionToDbase(nLen,m_aScales[i-1]);
                 else
                     nLen = SvDbaseConverter::ConvertPrecisionToDbase(nLen,getINT32((*aIter)->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))));
-                break;	// das Vorzeichen und das Komma
+                break;	// the sign and the comma
             
             case DataType::BINARY:
             case DataType::OTHER:
@@ -842,10 +841,10 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
                 continue;
         }
 
-        // Ist die Variable ueberhaupt gebunden?
+        // Is the variable bound?
         if ( !(_rRow->get())[i]->isBound() )
         {
-            // Nein - naechstes Feld.
+            // No - next field.
             nByteOffset += nLen;
             OSL_ENSURE( nByteOffset <= m_nBufferSize ,"ByteOffset > m_nBufferSize!");
             continue;
@@ -900,7 +899,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
         else if ( DataType::DOUBLE == nType )
         {
             double d = 0.0;
-            if (getBOOL((*aIter)->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency wird gesondert behandelt
+            if (getBOOL((*aIter)->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency is treated separately
             {
                 sal_Int64 nValue = 0;
                 memcpy(&nValue, pData, nLen);
@@ -920,7 +919,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
         else
         {
             sal_Int32 nPos1 = -1, nPos2 = -1;
-            // Falls Nul-Zeichen im String enthalten sind, in Blanks umwandeln!
+            // If the string contains Nul-characters, then convert them to blanks!
             for (sal_Int32 k = 0; k < nLen; k++)
             {
                 if (pData[k] == '\0')
@@ -941,7 +940,7 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
             {
                 // Empty string.  Skip it.
                 nByteOffset += nLen;
-                (_rRow->get())[i]->setNull();	// keine Werte -> fertig
+                (_rRow->get())[i]->setNull();	// no values -> done
                 continue;
             }
 
@@ -984,8 +983,8 @@ sal_Bool ODbaseTable::fetchRow(OValueRefRow& _rRow,const OSQLColumns & _rCols, s
                 case DataType::BINARY:
                 case DataType::LONGVARCHAR:
                 {
-                    const long nBlockNo = aStr.toInt32();	// Blocknummer lesen
-                    if (nBlockNo > 0 && m_pMemoStream) // Daten aus Memo-Datei lesen, nur wenn
+                    const long nBlockNo = aStr.toInt32();	// read blocknumber
+                    if (nBlockNo > 0 && m_pMemoStream) // Read data from memo-file, only if
                     {
                         if ( !ReadMemo(nBlockNo, (_rRow->get())[i]->get()) )
                             break;
@@ -1010,7 +1009,7 @@ void ODbaseTable::FileClose()
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::FileClose" );
     ::osl::MutexGuard aGuard(m_aMutex);
-    // falls noch nicht alles geschrieben wurde
+    // if not everything has been written yet
     if (m_pMemoStream && m_pMemoStream->IsWritable())
         m_pMemoStream->Flush();
 
@@ -1055,7 +1054,7 @@ BOOL ODbaseTable::CreateImpl()
         Content aContent(aURL.GetMainURL(INetURLObject::NO_DECODE),Reference<XCommandEnvironment>());
         if (aContent.isDocument())
         {
-            // Hack fuer Bug #30609 , nur wenn das File existiert und die Laenge > 0 gibt es einen Fehler
+            // Only if the file exists with length > 0 raise an error
             SvStream* pFileStream = createStream_simpleError( aURL.GetMainURL(INetURLObject::NO_DECODE),STREAM_READ);
 
             if (pFileStream && pFileStream->Seek(STREAM_SEEK_TO_END))
@@ -1154,12 +1153,12 @@ void ODbaseTable::throwInvalidColumnType(const sal_uInt16 _nErrorId,const ::rtl:
     ::dbtools::throwGenericSQLException( sError, *this );
 }
 //------------------------------------------------------------------
-// erzeugt grundsaetzlich dBase IV Datei Format
+// creates in principle dBase IV file format
 BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::CreateFile" );
     bCreateMemo = sal_False;
-    Date aDate;                                     // aktuelles Datum
+    Date aDate;                                     // current date
 
     m_pFileStream = createStream_simpleError( aFile.GetMainURL(INetURLObject::NO_DECODE),STREAM_READWRITE | STREAM_SHARE_DENYWRITE | STREAM_TRUNC );
 
@@ -1209,18 +1208,18 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
 
     m_pFileStream->Seek(0L);
     (*m_pFileStream) << (BYTE) nDbaseType;                              // dBase format
-    (*m_pFileStream) << (BYTE) (aDate.GetYear() % 100);                 // aktuelles Datum
+    (*m_pFileStream) << (BYTE) (aDate.GetYear() % 100);                 // current date
 
 
     (*m_pFileStream) << (BYTE) aDate.GetMonth();
     (*m_pFileStream) << (BYTE) aDate.GetDay();
-    (*m_pFileStream) << 0L;                                             // Anzahl der Datensaetze
-    (*m_pFileStream) << (USHORT)((m_pColumns->getCount()+1) * 32 + 1);  // Kopfinformationen,
-                                                                        // pColumns erhaelt immer eine Spalte mehr
-    (*m_pFileStream) << (USHORT) 0;                                     // Satzlaenge wird spaeter bestimmt
+    (*m_pFileStream) << 0L;                                             // number of data records
+    (*m_pFileStream) << (USHORT)((m_pColumns->getCount()+1) * 32 + 1);  // header information,
+                                                                        // pColumns contains always an additional column
+    (*m_pFileStream) << (USHORT) 0;                                     // record length will be determined later 
     m_pFileStream->Write(aBuffer, 20);
 
-    USHORT nRecLength = 1;                                              // Laenge 1 fuer deleted flag
+    USHORT nRecLength = 1;                                              // Length 1 for deleted flag
     sal_Int32  nMaxFieldLength = m_pConnection->getMetaData()->getMaxColumnNameLength();
     ::rtl::OUString aName;
     const ::rtl::OUString sPropName = OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME);
@@ -1262,7 +1261,7 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
                     cTyp = 'C';
                     break;
                 case DataType::DOUBLE:
-                    if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency wird gesondert behandelt
+                    if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency will be treated separately
                         cTyp = 'Y';
                     else
                         cTyp = 'B';
@@ -1276,7 +1275,7 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
                 case DataType::DECIMAL:
                 case DataType::NUMERIC:
                 case DataType::REAL:
-                    cTyp = 'N';                             // nur dBase 3 format
+                    cTyp = 'N';                             // only dBase 3 format
                     break;
                 case DataType::TIMESTAMP:
                     cTyp = 'T';
@@ -1313,9 +1312,9 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
                     {
                         throwInvalidColumnType(STR_INVALID_COLUMN_PRECISION, aName);
                     }
-                    (*m_pFileStream) << (BYTE) Min((unsigned)nPrecision, 255U);      //Feldlaenge
+                    (*m_pFileStream) << (BYTE) Min((unsigned)nPrecision, 255U);      // field length
                     nRecLength = nRecLength + (USHORT)::std::min((USHORT)nPrecision, (USHORT)255UL);
-                    (*m_pFileStream) << (BYTE)0;                                                                //Nachkommastellen
+                    (*m_pFileStream) << (BYTE)0;                                                                // decimals
                     break;
                 case 'F':
                 case 'N':
@@ -1325,9 +1324,9 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
                     {
                         throwInvalidColumnType(STR_INVALID_PRECISION_SCALE, aName);
                     }
-                    if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency wird gesondert behandelt
+                    if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency will be treated separately
                     {
-                        (*m_pFileStream) << (BYTE)10;          // Standard Laenge
+                        (*m_pFileStream) << (BYTE)10;          // standard length
                         (*m_pFileStream) << (BYTE)4;
                         nRecLength += 10;
                     }
@@ -1373,10 +1372,10 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
             aBuffer[0] = 0x00;
         }
 
-        (*m_pFileStream) << (BYTE)FIELD_DESCRIPTOR_TERMINATOR;              // kopf ende
+        (*m_pFileStream) << (BYTE)FIELD_DESCRIPTOR_TERMINATOR;              // end of header
         (*m_pFileStream) << (char)DBF_EOL;
         m_pFileStream->Seek(10L);
-        (*m_pFileStream) << nRecLength;                                     // Satzlaenge nachtraeglich eintragen
+        (*m_pFileStream) << nRecLength;                                     // set record length afterwards
 
         if (bCreateMemo)
         {
@@ -1403,11 +1402,11 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
 }
 
 //------------------------------------------------------------------
-// erzeugt grundsaetzlich dBase III Datei Format
+// creates in principle dBase III file format
 BOOL ODbaseTable::CreateMemoFile(const INetURLObject& aFile)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::CreateMemoFile" );
-    // Makro zum Filehandling fuers Erzeugen von Tabellen
+    // filehandling macro for table creation
     m_pMemoStream = createStream_simpleError( aFile.GetMainURL(INetURLObject::NO_DECODE),STREAM_READWRITE | STREAM_SHARE_DENYWRITE);
 
     if (!m_pMemoStream)
@@ -1428,7 +1427,7 @@ BOOL ODbaseTable::CreateMemoFile(const INetURLObject& aFile)
 #endif
 
     m_pMemoStream->Seek(0L);
-    (*m_pMemoStream) << long(1);                  // Zeiger auf ersten freien Block
+    (*m_pMemoStream) << long(1);                  // pointer to the first free block
 
     m_pMemoStream->Flush();
     delete m_pMemoStream;
@@ -1471,7 +1470,6 @@ BOOL ODbaseTable::Drop_Static(const ::rtl::OUString& _sUrl,sal_Bool _bHasMemoFie
             aURL.setExtension(String::CreateFromAscii("inf"));
 
             // as the inf file does not necessarily exist, we aren't allowed to use UCBContentHelper::Kill
-            // 89711 - 16.07.2001 - frank.schoenheit at sun.com
             try
             {
                 ::ucbhelper::Content aDeleteContent( aURL.GetMainURL( INetURLObject::NO_DECODE ), Reference< XCommandEnvironment > () );
@@ -1508,13 +1506,13 @@ BOOL ODbaseTable::DropImpl()
 BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<XIndexAccess>& _xCols)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::InsertRow" );
-    // Buffer mit Leerzeichen fuellen
+    // fill buffer with blanks
     AllocBuffer();
     memset(m_pBuffer, 0, m_aHeader.db_slng);
     m_pBuffer[0] = ' ';
 
-    // Gesamte neue Row uebernehmen:
-    // ... und am Ende als neuen Record hinzufuegen:
+    // Copy new row completely:
+    // ... and add at the end as new Record:
     UINT32 nTempPos = m_nFilePos;
 
     m_nFilePos = (ULONG)m_aHeader.db_anz + 1;
@@ -1533,26 +1531,26 @@ BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<X
 
         if (!WriteBuffer())
         {
-            m_pFileStream->SetStreamSize(nFileSize);                // alte Groesse restaurieren
+            m_pFileStream->SetStreamSize(nFileSize);                // restore old size
 
             if (HasMemoFields() && m_pMemoStream)
-                m_pMemoStream->SetStreamSize(nMemoFileSize);    // alte Groesse restaurieren
-            m_nFilePos = nTempPos;								// Fileposition restaurieren
+                m_pMemoStream->SetStreamSize(nMemoFileSize);    // restore old size
+            m_nFilePos = nTempPos;				// restore file position
         }
         else
         {
             (*m_pFileStream) << (char)DBF_EOL; // write EOL
-            // Anzahl Datensaetze im Header erhoehen:
+            // raise number of datasets in the header:
             m_pFileStream->Seek( 4L );
             (*m_pFileStream) << (m_aHeader.db_anz + 1);
 
-            // beim AppendOnly kein Flush!
+            // if AppendOnly no flush!
             if (bFlush)
                 m_pFileStream->Flush();
 
-            // bei Erfolg # erhoehen
+            // raise number if successfully
             m_aHeader.db_anz++;
-            *rRow.get()[0] = m_nFilePos;							    // BOOKmark setzen
+            *rRow.get()[0] = m_nFilePos;							    // set bookmark
             m_nFilePos = nTempPos;
         }
     }
@@ -1566,10 +1564,10 @@ BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<X
 BOOL ODbaseTable::UpdateRow(OValueRefVector& rRow, OValueRefRow& pOrgRow,const Reference<XIndexAccess>& _xCols)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::UpdateRow" );
-    // Buffer mit Leerzeichen fuellen
+    // fill buffer with blanks
     AllocBuffer();
 
-    // Auf gewuenschten Record positionieren:
+    // position on desired record:
     long nPos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
     m_pFileStream->Seek(nPos);
     m_pFileStream->Read((char*)m_pBuffer, m_aHeader.db_slng);
@@ -1583,7 +1581,7 @@ BOOL ODbaseTable::UpdateRow(OValueRefVector& rRow, OValueRefRow& pOrgRow,const R
     if (!UpdateBuffer(rRow, pOrgRow,_xCols) || !WriteBuffer())
     {
         if (HasMemoFields() && m_pMemoStream)
-            m_pMemoStream->SetStreamSize(nMemoFileSize);    // alte Groesse restaurieren
+            m_pMemoStream->SetStreamSize(nMemoFileSize);    // restore old size
     }
     else
     {
@@ -1596,9 +1594,8 @@ BOOL ODbaseTable::UpdateRow(OValueRefVector& rRow, OValueRefRow& pOrgRow,const R
 BOOL ODbaseTable::DeleteRow(const OSQLColumns& _rCols)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::DeleteRow" );
-    // Einfach das Loesch-Flag setzen (egal, ob es schon gesetzt war
-    // oder nicht):
-    // Auf gewuenschten Record positionieren:
+    // Set the Delete-Flag (be it set or not):
+    // Position on desired record:
     long nFilePos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
     m_pFileStream->Seek(nFilePos);
 
@@ -1690,7 +1687,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const
         return FALSE;
     sal_Int32 nByteOffset  = 1;
 
-    // Felder aktualisieren:
+    // Update fields:
     Reference<XPropertySet> xCol;
     Reference<XPropertySet> xIndex;
     USHORT i;
@@ -1740,7 +1737,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const
 
                 if (pIndex->Find(0,*rRow.get()[nPos]))
                 {
-                    // es existiert kein eindeutiger Wert
+                    // There is no unique value
                     if ( !aColName.getLength() )
                     {
                         m_pColumns->getByIndex(i) >>= xCol;
@@ -1902,7 +1899,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const
                         const double d = rRow.get()[nPos]->getValue();
                         m_pColumns->getByIndex(i) >>= xCol;
                         
-                        if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency wird gesondert behandelt
+                        if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency is treated separately
                         {
                             sal_Int64 nValue = 0;
                             if ( m_aScales[i] )
@@ -1910,7 +1907,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const
                             else
                                 nValue = (sal_Int64)(d);
                             memcpy(pData,&nValue,nLen);
-                        } // if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency wird gesondert behandelt
+                        } // if (getBOOL(xCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))) // Currency is treated separately
                         else
                             memcpy(pData,&d,nLen);
                     }
@@ -2018,7 +2015,7 @@ BOOL ODbaseTable::UpdateBuffer(OValueRefVector& rRow, OValueRefRow pOrgRow,const
 BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::WriteMemo" );
-    // wird die BlockNr 0 vorgegeben, wird der block ans Ende gehaengt
+    // if the BlockNo 0 is given, the block will be appended at the end
     ULONG nSize = 0;
     ::rtl::OString aStr;
     ::com::sun::star::uno::Sequence<sal_Int8> aValue;
@@ -2034,18 +2031,18 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
         nSize = DBTypeConversion::convertUnicodeString( aVariable.getString(), aStr, m_eEncoding );
     }
 
-    // Anhaengen oder ueberschreiben
+    // append or overwrite
     BOOL bAppend = rBlockNr == 0;
 
     if (!bAppend)
     {
         switch (m_aMemoHeader.db_typ)
         {
-            case MemodBaseIII: // dBase III-Memofeld, endet mit 2 * Ctrl-Z
+            case MemodBaseIII: // dBase III-Memofield, ends with 2 * Ctrl-Z
                 bAppend = nSize > (512 - 2);
                 break;
             case MemoFoxPro:
-            case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+            case MemodBaseIV: // dBase IV-Memofield with length
             {
                 char sHeader[4];
                 m_pMemoStream->Seek(rBlockNr * m_aMemoHeader.db_size);
@@ -2064,7 +2061,7 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
                                  (unsigned char)sHeader[1]) * 256 +
                                  (unsigned char)sHeader[0]  - 8;
 
-                // passt die neue Laenge in die belegten Bloecke
+                // fits the new length in the used blocks
                 ULONG nUsedBlocks = ((nSize + 8) / m_aMemoHeader.db_size) + (((nSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0),
                       nOldUsedBlocks = ((nOldSize + 8) / m_aMemoHeader.db_size) + (((nOldSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0);
                 bAppend = nUsedBlocks > nOldUsedBlocks;
@@ -2075,7 +2072,7 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
     if (bAppend)
     {
         ULONG nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
-        // letzten block auffuellen
+        // fill last block
         rBlockNr = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
 
         m_pMemoStream->SetStreamSize(rBlockNr * m_aMemoHeader.db_size);
@@ -2088,7 +2085,7 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
 
     switch (m_aMemoHeader.db_typ)
     {
-        case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
+        case MemodBaseIII: // dBase III-Memofield, ends with Ctrl-Z
         {
             const char cEOF = (char) DBF_EOL;
             nSize++;
@@ -2096,7 +2093,7 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
             (*m_pMemoStream) << cEOF << cEOF;
         } break;
         case MemoFoxPro:
-        case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+        case MemodBaseIV: // dBase IV-Memofeld with length
         {
             if ( MemodBaseIV == m_aMemoHeader.db_typ )
                 (*m_pMemoStream) << (BYTE)0xFF
@@ -2135,13 +2132,13 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
     }
 
 
-    // Schreiben der neuen Blocknummer
+    // Write the new block number
     if (bAppend)
     {
         ULONG nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
         m_aMemoHeader.db_next = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
 
-        // Schreiben der neuen Blocknummer
+        // Write the new block number
         m_pMemoStream->Seek(0L);
         (*m_pMemoStream) << m_aMemoHeader.db_next;
         m_pMemoStream->Flush();
@@ -2603,7 +2600,7 @@ sal_Bool ODbaseTable::seekRow(IResultSetHelper::Movement eCursorPosition, sal_In
 {
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::seekRow" );
     // ----------------------------------------------------------
-    // Positionierung vorbereiten:
+    // prepare positioning:
     OSL_ENSURE(m_pFileStream,"ODbaseTable::seekRow: FileStream is NULL!");
 
     sal_uInt32  nNumberOfRecords = (sal_uInt32)m_aHeader.db_anz;
@@ -2674,7 +2671,7 @@ Error:
                 m_nFilePos = 0;
             break;
         case IResultSetHelper::BOOKMARK:
-            m_nFilePos = nTempPos;	 // vorherige Position
+            m_nFilePos = nTempPos;	 // last position
     }
     return sal_False;
 
@@ -2691,12 +2688,12 @@ BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
     m_pMemoStream->Seek(nBlockNo * m_aMemoHeader.db_size);
     switch (m_aMemoHeader.db_typ)
     {
-        case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
+        case MemodBaseIII: // dBase III-Memofield, ends with Ctrl-Z
         {
             const char cEOF = (char) DBF_EOL;
             ByteString aBStr;
             static char aBuf[514];
-            aBuf[512] = 0;			// sonst kann der Zufall uebel mitspielen
+            aBuf[512] = 0;			// avoid random value
             BOOL bReady = sal_False;
 
             do
@@ -2718,7 +2715,7 @@ BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
 
         } break;
         case MemoFoxPro:
-        case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+        case MemodBaseIV: // dBase IV-Memofield with length
         {
             char sHeader[4];
             m_pMemoStream->Read(sHeader,4);
@@ -2785,7 +2782,7 @@ void ODbaseTable::AllocBuffer()
         m_pBuffer = NULL;
     }
 
-    // Falls noch kein Puffer vorhanden: allozieren:
+    // if there is no buffer available: allocate:
     if (m_pBuffer == NULL && nSize)
     {
         m_nBufferSize = nSize;
@@ -2798,7 +2795,7 @@ BOOL ODbaseTable::WriteBuffer()
     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbase", "Ocke.Janssen at sun.com", "ODbaseTable::WriteBuffer" );
     OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
 
-    // Auf gewuenschten Record positionieren:
+    // postion on desired record:
     long nPos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
     m_pFileStream->Seek(nPos);
     return m_pFileStream->Write((char*) m_pBuffer, m_aHeader.db_slng) > 0;
diff --git a/connectivity/source/drivers/dbase/Dservices.cxx b/connectivity/source/drivers/dbase/Dservices.cxx
index 27adb90..827bf4f 100644
--- a/connectivity/source/drivers/dbase/Dservices.cxx
+++ b/connectivity/source/drivers/dbase/Dservices.cxx
@@ -50,11 +50,8 @@ typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
         );
 
 //***************************************************************************************
-//
-// Die vorgeschriebene C-Api muss erfuellt werden!
-// Sie besteht aus drei Funktionen, die von dem Modul exportiert werden muessen.
-//
-
+// The prescribed C-Api must be met!
+// It consists of three functions, which must be exported by the module.
 //---------------------------------------------------------------------------------------
 void REGISTER_PROVIDER(
         const OUString& aServiceImplName,
@@ -73,7 +70,6 @@ void REGISTER_PROVIDER(
         xNewKey->createKey(Services[i]);
 }
 
-
 //---------------------------------------------------------------------------------------
 struct ProviderRequest
 {
@@ -113,7 +109,6 @@ struct ProviderRequest
 };
 
 //---------------------------------------------------------------------------------------
-
 extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
 component_getImplementationEnvironment(
                 const sal_Char	**ppEnvTypeName,
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index f769980..66c2485 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -66,7 +66,6 @@ ONDXKey::ONDXKey(const rtl::OUString& aStr, UINT32 nRec)
     }
 }
 // -----------------------------------------------------------------------------
-
 ONDXKey::ONDXKey(double aVal, UINT32 nRec)
     : ONDXKey_BASE(::com::sun::star::sdbc::DataType::DOUBLE)
      ,nRecord(nRec)
@@ -98,7 +97,7 @@ ONDXPage::~ONDXPage()
 //------------------------------------------------------------------
 void ONDXPage::QueryDelete()
 {
-    // Ablegen im GarbageCollector
+    // Store in GarbageCollector
     if (IsModified() && rIndex.m_pFileStream)
         (*rIndex.m_pFileStream) << *this;
 
@@ -137,7 +136,7 @@ ONDXPagePtr& ONDXPage::GetChild(ODbaseIndex* pIndex)
 //------------------------------------------------------------------
 USHORT ONDXPage::FindPos(const ONDXKey& rKey) const
 {
-    // sucht nach Platz fuer den vorgegeben key auf einer Seite
+    // searches the position for the given key in a page
     USHORT i = 0;
     while (i < nCount && rKey > ((*this)[i]).GetKey())
            i++;
@@ -148,11 +147,10 @@ USHORT ONDXPage::FindPos(const ONDXKey& rKey) const
 //------------------------------------------------------------------
 BOOL ONDXPage::Find(const ONDXKey& rKey)
 {
-    // sucht den vorgegeben key
-    // Besonderheit: gelangt der Algorithmus ans Ende
-    // wird immer die aktuelle Seite und die Knotenposition vermerkt
-    // auf die die Bedingung <= zutrifft
-    // dieses findet beim Insert besondere Beachtung
+    // searches the given key
+    // Speciality: At the end of the method
+    // the actual page and the position of the node, fulfilling the '<=' condition, are saved
+    // This is considered at insert.
     USHORT i = 0;
     while (i < nCount && rKey > ((*this)[i]).GetKey())
            i++;
@@ -161,7 +159,7 @@ BOOL ONDXPage::Find(const ONDXKey& rKey)
 
     if (!IsLeaf())
     {
-        // weiter absteigen
+        // descend further
         ONDXPagePtr aPage = (i==0) ? GetChild(&rIndex) : ((*this)[i-1]).GetChild(&rIndex, this);
         bResult = aPage.Is() && aPage->Find(rKey);
     }
@@ -183,8 +181,8 @@ BOOL ONDXPage::Find(const ONDXKey& rKey)
 //------------------------------------------------------------------
 BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
 {
-    // beim Erzeugen eines Index koennen auch mehrere Knoten eingefuegt werden
-    // diese sin dann aufsteigend sortiert
+    // When creating an index there can be multiple nodes added,
+    // these are sorted ascending 
     BOOL bAppend = nRowsLeft > 0;
     if (IsFull())
     {
@@ -194,17 +192,16 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
             aSplitNode = rNode;
         else
         {
-            // merken des letzten Knotens
+            // Save the last node
             aSplitNode = (*this)[nCount-1];
             if(rNode.GetKey() <= aSplitNode.GetKey())
             {
 
-                // und damit habe ich im folgenden praktisch eine Node weniger
+                // this practically reduces the number of nodes by 1
                 if (IsLeaf() && this == &rIndex.m_aCurLeaf)
                 {
-                    // geht davon aus, dass der Knoten, auf dem die Bedingung (<=)
-                    // zutrifft, als m_nCurNode gesetzt ist
-                    --nCount;	// (sonst bekomme ich u.U. Assertions und GPFs - 60593)
+                    // assumes, that the node, for which the condition (<=) holds, is stored in m_nCurNode
+                    --nCount;	// (otherwise we might get Assertions and GPFs - 60593)
                     bResult = Insert(rIndex.m_nCurNode + 1, rNode);
                 }
                 else  // Position unbekannt
@@ -212,11 +209,11 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
                     USHORT nPos = NODE_NOTFOUND;
                     while (++nPos < nCount && rNode.GetKey() > ((*this)[nPos]).GetKey()) ;
 
-                    --nCount;	// (sonst bekomme ich u.U. Assertions und GPFs - 60593)
+                    --nCount;	// (otherwise we might get Assertions and GPFs - 60593)
                     bResult = Insert(nPos, rNode);
                 }
 
-                // konnte der neue Knoten eingefuegt werden
+                // can the new node be inserted
                 if (!bResult)
                 {
                     nCount++;
@@ -230,10 +227,10 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
         sal_uInt32 nNewPagePos = rIndex.GetPageCount();
         sal_uInt32 nNewPageCount = nNewPagePos + 1;
 
-        // Herausgeloesten Knoten beim Vater einfuegen
+        // insert extracted node into parent node
         if (!HasParent())
         {
-            // Kein Vater, dann neue Wurzel
+            // No parent, then new root
             ONDXPagePtr aNewRoot = rIndex.CreatePage(nNewPagePos + 1);
             aNewRoot->SetChild(this);
 
@@ -242,13 +239,12 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
             rIndex.SetPageCount(++nNewPageCount);
         }
 
-        // neues blatt erzeugen und Seite aufteilen
+        // create new leaf and divide page
         ONDXPagePtr aNewPage = rIndex.CreatePage(nNewPagePos,aParent);
         rIndex.SetPageCount(nNewPageCount);
 
-        // wieviele Knoten weren noch eingefuegt
-        // kommen noch ausreichend, dann koennen die Seiten bis zum Rand vollgestopft werden
-
+        // How many nodes are being inserted?
+        // Enough, then we can fill the page to the brim
         ONDXNode aInnerNode;
         if (!IsLeaf() || nRowsLeft < (sal_uInt32)(rIndex.GetMaxNodes() / 2))
             aInnerNode = Split(*aNewPage);
@@ -256,14 +252,14 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
         {
             aInnerNode = (*this)[nCount - 1];
 
-            // Knoten zeigt auf neue Seite
+            // Node points to the new page
             aInnerNode.SetChild(aNewPage);
 
-            // innere Knoten haben keine Recordnummer
+            // Inner nodes have no record number
             if (rIndex.isUnique())
                 aInnerNode.GetKey().ResetRecord();
 
-            // neue Seite zeigt nun auf Seite des herausgeloesten Knoten
+            // new page points to the page of the extracted node
             if (!IsLeaf())
                 aNewPage->SetChild(aInnerNode.GetChild());
         }
@@ -275,15 +271,15 @@ BOOL ONDXPage::Insert(ONDXNode& rNode, sal_uInt32 nRowsLeft)
             rIndex.m_aCurLeaf = aNewPage;
             rIndex.m_nCurNode = rIndex.m_aCurLeaf->Count() - 1;
 
-            // Freigeben nicht benoetigter Seiten, danach besteht keine Referenz
-            // mehr auf die Seite, danach kann 'this' nicht mehr gueltig sein!!!
+            // free not needed pages, there are no references to those on the page
+            // afterwards 'this' can't be valid anymore!!!
             ReleaseFull();
         }
 
-        // Einfuegen des herausgeloesten Knotens
+        // Insert extracted node
         return aTempParent->Insert(aInnerNode);
     }
-    else // Seite einfach weiter auffuellen
+    else // Fill the page up
     {
         if (bAppend)
         {
@@ -312,7 +308,7 @@ BOOL ONDXPage::Insert(USHORT nPos, ONDXNode& rNode)
     if (nCount)
     {
         ++nCount;
-        // nach rechts verschieben
+        // shift right
         for (USHORT i = std::min((USHORT)(nMaxCount-1), (USHORT)(nCount-1)); nPos < i; --i)
             (*this)[i] = (*this)[i-1];
     }
@@ -320,7 +316,7 @@ BOOL ONDXPage::Insert(USHORT nPos, ONDXNode& rNode)
         if (nCount < nMaxCount)
             nCount++;
 
-    // einfuegen an der Position
+    // insert at the position
     ONDXNode& rInsertNode = (*this)[nPos];
     rInsertNode = rNode;
     if (rInsertNode.GetChild().Is())
@@ -343,11 +339,11 @@ BOOL ONDXPage::Append(ONDXNode& rNode)
 //------------------------------------------------------------------
 void ONDXPage::Release(BOOL bSave)
 {
-    // freigeben der Pages
+    // free pages
     if (aChild.Is())
         aChild->Release(bSave);
 
-    // Pointer freigeben
+    // free pointer
     aChild.Clear();
 
     for (USHORT i = 0; i < rIndex.getHeader().db_maxkeys;i++)
@@ -367,8 +363,8 @@ void ONDXPage::ReleaseFull(BOOL bSave)
 
     if (aTempParent.Is())
     {
-        // Freigeben nicht benoetigter Seiten, danach besteht keine Referenz
-        // mehr auf die Seite, danach kann 'this' nicht mehr gueltig sein!!!
+        // Free pages not needed, there will be no reference anymore to the pages
+        // afterwards 'this' can't be valid anymore!!!
         USHORT nParentPos = aTempParent->Search(this);
         if (nParentPos != NODE_NOTFOUND)
             (*aTempParent)[nParentPos].GetChild().Clear();
@@ -381,40 +377,39 @@ BOOL ONDXPage::Delete(USHORT nNodePos)
 {
     if (IsLeaf())
     {
-        // Letztes Element wird geloescht
+        // The last element will not be deleted
         if (nNodePos == (nCount - 1))
         {
             ONDXNode aNode = (*this)[nNodePos];
 
-            // beim Parent muss nun der KeyValue ausgetauscht werden
+            // parent's KeyValue has to be replaced
             if (HasParent())
                 aParent->SearchAndReplace(aNode.GetKey(),
                                           (*this)[nNodePos-1].GetKey());
         }
     }
 
-    // Loeschen des Knoten
+    // Delete the node
     Remove(nNodePos);
 
-    // Unterlauf
+    // Underflow
     if (HasParent() && nCount < (rIndex.GetMaxNodes() / 2))
     {
-        // Feststellen, welcher Knoten auf die Seite zeigt
+        // determine, which node points to the page
         USHORT nParentNodePos = aParent->Search(this);
-        // letzte Element auf Vaterseite
-        // -> zusammenlegen mit vorletzter Seite
+        // last element on parent-page -> merge with secondlast page
         if (nParentNodePos == (aParent->Count() - 1))
         {
             if (!nParentNodePos)
-            // zusammenlegen mit linken nachbarn
+            // merge with left neighbour
                 Merge(nParentNodePos,aParent->GetChild(&rIndex));
             else
                 Merge(nParentNodePos,(*aParent)[nParentNodePos-1].GetChild(&rIndex,aParent));
         }
-        // sonst Seite mit naechster Seite zusammenlegen
+        // otherwise merge page with next page
         else
         {
-            // zusammenlegen mit rechten nachbarn
+            // merge with right neighbour
             Merge(nParentNodePos + 1,((*aParent)[nParentNodePos + 1].GetChild(&rIndex,aParent)));
             nParentNodePos++;
         }
@@ -422,7 +417,7 @@ BOOL ONDXPage::Delete(USHORT nNodePos)
             aParent->Delete(nParentNodePos);
     }
     else if (IsRoot())
-        // Sicherstellen das die Position der Wurzel festgehalten wird
+        // make sure that the position of the root is kept
         rIndex.SetRootPos(nPagePos);
     return TRUE;
 }
@@ -432,15 +427,15 @@ BOOL ONDXPage::Delete(USHORT nNodePos)
 ONDXNode ONDXPage::Split(ONDXPage& rPage)
 {
     DBG_ASSERT(IsFull(), "Falsches Splitting");
-    /*	Aufteilen einer Seite auf zwei
-        Blatt:
-            Seite 1 behaelt (n - (n/2))
-            Seite 2 erhaelt (n/2)
-            Knoten n/2 wird dupliziert
-        Innerer Knoten:
-            Seite 1 behaelt (n+1)/2
-            Seite 2 erhaelt (n/2-1)
-            Knoten ((n+1)/2 + 1) : wird herausgenommen
+    /*	devide one page into two
+        leaf:
+            Page 1 is (n - (n/2))
+            Page 2 is (n/2)
+            Node n/2 will be duplicated
+        inner node:
+            Page 1 is (n+1)/2
+            Page 2 is (n/2-1)
+            Node ((n+1)/2 + 1) : will be taken out
     */
     ONDXNode aResultNode;
     if (IsLeaf())
@@ -448,8 +443,7 @@ ONDXNode ONDXPage::Split(ONDXPage& rPage)
         for (USHORT i = (nCount - (nCount / 2)), j = 0 ; i < nCount; i++)
             rPage.Insert(j++,(*this)[i]);
 
-        // dieser Knoten enthaelt einen Schluessel der noch einmal im Tree vorkommt
-        // und ersetzt werden muss
+        // this node contains a key that already exists in the tree and must be replaced
         ONDXNode aLastNode = (*this)[nCount - 1];
         nCount = nCount - (nCount / 2);
         aResultNode = (*this)[nCount - 1];
@@ -466,13 +460,13 @@ ONDXNode ONDXPage::Split(ONDXPage& rPage)
         aResultNode = (*this)[(nCount + 1) / 2];
         nCount = (nCount + 1) / 2;
 
-        // neue Seite zeigt nun auf Seite des herausgeloesten Knoten
+        // new page points to page with extraced node
         rPage.SetChild(aResultNode.GetChild());
     }
-    // Knoten zeigt auf neue Seite
+    // node points to new page
     aResultNode.SetChild(&rPage);
 
-    // innere Knoten haben keine Recordnummer
+    // inner nodes have no record number
     if (rIndex.isUnique())
         aResultNode.GetKey().ResetRecord();
     bModified = TRUE;
@@ -485,25 +479,25 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
     DBG_ASSERT(HasParent(), "kein Vater vorhanden");
     DBG_ASSERT(nParentNodePos != NODE_NOTFOUND, "Falscher Indexaufbau");
 
-    /*	Zusammenlegen zweier Seiten	*/
+    /*	Merge 2 pages	*/
     ONDXNode aResultNode;
     USHORT nMaxNodes = rIndex.GetMaxNodes(),
            nMaxNodes_2 = nMaxNodes / 2;
 
-    // Feststellen ob Seite rechter oder linker Nachbar
-    BOOL	bRight    = ((*xPage)[0].GetKey() > (*this)[0].GetKey()); // TRUE, wenn xPage die rechte Seite ist
+    // Determine if page is right or left neighbour
+    BOOL	bRight    = ((*xPage)[0].GetKey() > (*this)[0].GetKey()); // TRUE, if xPage is the right page
     USHORT	nNewCount = (*xPage).Count() + Count();
 
     if (IsLeaf())
     {
-        // Bedingung fuers zusammenlegen
+        // Condition for merge
         if (nNewCount < (nMaxNodes_2 * 2))
         {
             USHORT nLastNode = bRight ? Count() - 1 : xPage->Count() - 1;
             if (bRight)
             {
                 DBG_ASSERT(&xPage != this,"xPage und THIS duerfen nicht gleich sein: Endlosschleife");
-                // alle Knoten aus xPage auf den linken Knoten verschieben (anhaengen)
+                // shift all nodes from xPage to the left node (append)
                 while (xPage->Count())
                 {
                     Append((*xPage)[0]);
@@ -513,26 +507,24 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
             else
             {
                 DBG_ASSERT(&xPage != this,"xPage und THIS duerfen nicht gleich sein: Endlosschleife");
-                // xPage ist die linke Page und THIS die rechte
+                // xPage is the left page and THIS the right one
                 while (xPage->Count())
                 {
                     Insert(0,(*xPage)[xPage->Count()-1]);
                     xPage->Remove(xPage->Count()-1);
                 }
-                // alte Position von xPage beim Parent mit this ersetzen
+                // replace old position of xPage in parent with this
                 if (nParentNodePos)
                     (*aParent)[nParentNodePos-1].SetChild(this,aParent);
-                else // oder als rechten Knoten setzen
+                else // or set as right node
                     aParent->SetChild(this);
                 aParent->SetModified(TRUE);
 
             }
 
-            // Child beziehung beim Vaterknoten aufheben
+            // cancel Child-relationship at parent node
             (*aParent)[nParentNodePos].SetChild();
-            // Austauschen des KnotenWertes, nur wenn geaenderte Page
-            // die linke ist, ansonsten werde
-
+            // replace the Node-value, only if changed page is the left one, otherwise become
             if(aParent->IsRoot() && aParent->Count() == 1)
             {
                 (*aParent)[0].SetChild();
@@ -546,47 +538,46 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
                 aParent->SearchAndReplace((*this)[nLastNode].GetKey(),(*this)[nCount-1].GetKey());
 
             xPage->SetModified(FALSE);
-            xPage->ReleaseFull(); // wird nicht mehr benoetigt
+            xPage->ReleaseFull(); // is not needed anymore
         }
-        // Ausgleichen der Elemente	  nNewCount >= (nMaxNodes_2 * 2)
+        // balance the elements	  nNewCount >= (nMaxNodes_2 * 2)
         else
         {
             if (bRight)
             {
-                // alle Knoten aus xPage auf den linken Knoten verschieben (anhaengen)
+                // shift all nodes from xPage to the left node (append)
                 ONDXNode aReplaceNode = (*this)[nCount - 1];
                 while (nCount < nMaxNodes_2)
                 {
                     Append((*xPage)[0]);
                     xPage->Remove(0);
                 }
-                // Austauschen des KnotenWertes: Setzt alten letzten Wert durch den letzten von xPage
+                // Replace the node values: replace old last value by the last of xPage
                 aParent->SearchAndReplace(aReplaceNode.GetKey(),(*this)[nCount-1].GetKey());
             }
             else
             {
-                // alle Knoten aus this vor die xPage Knoten einfuegen
+                // insert all nodes from this in front of the xPage nodes
                 ONDXNode aReplaceNode = (*this)[nCount - 1];
                 while (xPage->Count() < nMaxNodes_2)
                 {
                     xPage->Insert(0,(*this)[nCount-1]);
                     Remove(nCount-1);
                 }
-                // Austauschen des KnotenWertes
+                // Replace the node value
                 aParent->SearchAndReplace(aReplaceNode.GetKey(),(*this)[Count()-1].GetKey());
             }
         }
     }
     else // !IsLeaf()
     {
-        // Bedingung fuers zusammenlegen
+        // Condition for merge
         if (nNewCount < nMaxNodes_2 * 2)
         {
             if (bRight)
             {
                 DBG_ASSERT(&xPage != this,"xPage und THIS duerfen nicht gleich sein: Endlosschleife");
-                // Vaterknoten wird mit integriert
-                // erhaelt zunaechst Child von xPage
+                // Parent node will be integrated; is initialized with Child from xPage
                 (*aParent)[nParentNodePos].SetChild(xPage->GetChild(),aParent);
                 Append((*aParent)[nParentNodePos]);
                 for (USHORT i = 0 ; i < xPage->Count(); i++)
@@ -595,10 +586,9 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
             else
             {
                 DBG_ASSERT(&xPage != this,"xPage und THIS duerfen nicht gleich sein: Endlosschleife");
-                // Vaterknoten wird mit integriert
-                // erhaelt zunaechst Child
-                (*aParent)[nParentNodePos].SetChild(GetChild(),aParent); // Parent merkt sich mein Child
-                Insert(0,(*aParent)[nParentNodePos]); // Node vom Parent bei mir einfuegen
+                // Parent-node will be integrated; is initialized with child
+                (*aParent)[nParentNodePos].SetChild(GetChild(),aParent); // Parent memorizes my child
+                Insert(0,(*aParent)[nParentNodePos]); // insert parent node into myself
                 while (xPage->Count())
                 {
                     Insert(0,(*xPage)[xPage->Count()-1]);
@@ -612,7 +602,7 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
                     aParent->SetChild(this);
             }
 
-            // danach wird der Vaterknoten zurueckgesetzt
+            // afterwards parent node will be reset
             (*aParent)[nParentNodePos].SetChild();
             aParent->SetModified(TRUE);
 
@@ -626,15 +616,15 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
                 SetModified(TRUE);
             }
             else if(nParentNodePos)
-                // Austauschen des KnotenWertes
-                // beim Append wird der Bereich erweitert, beim INsert verweist der alte Knoten von xPage auf this
-                // deshalb muss der Knoten auch hier aktualisiert werden
+                // replace the node value
+                // for Append the range will be enlarged, for Insert the old node from xPage will reference to this
+                // thats why the node must be updated here
                 aParent->SearchAndReplace((*aParent)[nParentNodePos-1].GetKey(),(*aParent)[nParentNodePos].GetKey());
 
             xPage->SetModified(FALSE);
             xPage->ReleaseFull();
         }
-        // Ausgleichen der Elemente
+        // balance the elements
         else
         {
             if (bRight)
@@ -673,7 +663,7 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
 //------------------------------------------------------------------
 void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex)
 {
-    rStream >> aKey.nRecord; // schluessel
+    rStream >> aKey.nRecord; // key
 
     if (rIndex.getHeader().db_keytype)
     {
@@ -707,9 +697,9 @@ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const
 {
     const ODbaseIndex& rIndex = rPage.GetIndex();
     if (!rIndex.isUnique() || rPage.IsLeaf())
-        rStream << (sal_uInt32)aKey.nRecord; // schluessel
+        rStream << (sal_uInt32)aKey.nRecord; // key
     else
-        rStream << (sal_uInt32)0;	// schluessel
+        rStream << (sal_uInt32)0;	// key
 
     if (rIndex.getHeader().db_keytype) // double
     {
@@ -785,7 +775,7 @@ StringCompare ONDXKey::Compare(const ONDXKey& rKey) const
         eResult = (m > n) ? COMPARE_GREATER : (n == m) ? COMPARE_EQUAL : COMPARE_LESS;
     }
 
-    // Record vergleich, wenn Index !Unique
+    // compare record, if index !Unique
     if (eResult == COMPARE_EQUAL && nRecord && rKey.nRecord)
         eResult = (nRecord > rKey.nRecord) ? COMPARE_GREATER :
                   (nRecord == rKey.nRecord) ? COMPARE_EQUAL : COMPARE_LESS;
@@ -865,7 +855,7 @@ SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
 //------------------------------------------------------------------
 SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& rPage)
 {
-    // Seite existiert noch nicht
+    // Page doesn't exist yet
     ULONG nSize = (rPage.GetPagePos() + 1) * PAGE_SIZE;
     if (nSize > rStream.Seek(STREAM_SEEK_TO_END))
     {
@@ -952,7 +942,7 @@ BOOL ONDXPage::IsFull() const
 //------------------------------------------------------------------
 USHORT ONDXPage::Search(const ONDXKey& rSearch)
 {
-    // binare Suche spaeter
+    // binary search later
     USHORT i = NODE_NOTFOUND;
     while (++i < Count())
         if ((*this)[i].GetKey() == rSearch)
@@ -969,12 +959,11 @@ USHORT ONDXPage::Search(const ONDXPage* pPage)
         if (((*this)[i]).GetChild() == pPage)
             break;
 
-    // wenn nicht gefunden, dann wird davon ausgegangen, dass die Seite selbst
-    // auf die Page zeigt
+    // if not found, then we assume, that the page itself points to the page
     return (i < Count()) ? i : NODE_NOTFOUND;
 }
 // -----------------------------------------------------------------------------
-// laeuft rekursiv
+// runs recursively
 void ONDXPage::SearchAndReplace(const ONDXKey& rSearch,
                                   ONDXKey& rReplace)
 {


More information about the Libreoffice-commits mailing list