summaryrefslogtreecommitdiffstats
path: root/tdecore/ksycocafactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdecore/ksycocafactory.cpp')
-rw-r--r--tdecore/ksycocafactory.cpp202
1 files changed, 0 insertions, 202 deletions
diff --git a/tdecore/ksycocafactory.cpp b/tdecore/ksycocafactory.cpp
deleted file mode 100644
index c224ebe79..000000000
--- a/tdecore/ksycocafactory.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/* This file is part of the KDE libraries
- * Copyright (C) 1999 David Faure <[email protected]>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License version 2 as published by the Free Software Foundation;
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- **/
-
-#include "ksycoca.h"
-#include "ksycocatype.h"
-#include "ksycocafactory.h"
-#include "ksycocaentry.h"
-#include "ksycocadict.h"
-#include <tqstringlist.h>
-#include <tqdict.h>
-#include <kdebug.h>
-
-template class TQDict<KSycocaEntry>;
-template class TQDict<KSharedPtr<KSycocaEntry> >;
-
-KSycocaFactory::KSycocaFactory(KSycocaFactoryId factory_id)
- : m_resourceList(0), m_entryDict(0), m_sycocaDict(0)
-{
- if (!KSycoca::self()->isBuilding()) // read-only database ?
- {
- m_str = KSycoca::self()->findFactory( factory_id );
- // can't call factoryId() here since the constructor can't call inherited methods
- if (m_str) // Can be 0 in case of errors
- {
- // Read position of index tables....
- TQ_INT32 i;
- (*m_str) >> i;
- m_sycocaDictOffset = i;
- (*m_str) >> i;
- m_beginEntryOffset = i;
- (*m_str) >> i;
- m_endEntryOffset = i;
-
- int saveOffset = m_str->device()->at();
- // Init index tables
- m_sycocaDict = new KSycocaDict(m_str, m_sycocaDictOffset);
- saveOffset = m_str->device()->at(saveOffset);
- }
- }
- else
- {
- // Build new database!
- m_str = 0;
- m_resourceList = 0;
- m_entryDict = new KSycocaEntryDict(977);
- m_entryDict->setAutoDelete(true);
- m_sycocaDict = new KSycocaDict();
- m_beginEntryOffset = 0;
- m_endEntryOffset = 0;
-
- // m_resourceList will be filled in by inherited constructors
- }
- KSycoca::self()->addFactory(this);
-}
-
-KSycocaFactory::~KSycocaFactory()
-{
- delete m_entryDict;
- delete m_sycocaDict;
-}
-
-void
-KSycocaFactory::saveHeader(TQDataStream &str)
-{
- // Write header
- str.device()->at(mOffset);
- str << (TQ_INT32) m_sycocaDictOffset;
- str << (TQ_INT32) m_beginEntryOffset;
- str << (TQ_INT32) m_endEntryOffset;
-}
-
-void
-KSycocaFactory::save(TQDataStream &str)
-{
- if (!m_entryDict) return; // Error! Function should only be called when
- // building database
- if (!m_sycocaDict) return; // Error!
-
- mOffset = str.device()->at(); // store position in member variable
- m_sycocaDictOffset = 0;
-
- // Write header (pass #1)
- saveHeader(str);
-
- m_beginEntryOffset = str.device()->at();
-
- // Write all entries.
- int entryCount = 0;
- for(TQDictIterator<KSycocaEntry::Ptr> it ( *m_entryDict );
- it.current();
- ++it)
- {
- KSycocaEntry *entry = (*it.current());
- entry->save(str);
- entryCount++;
- }
-
- m_endEntryOffset = str.device()->at();
-
- // Write indices...
- // Linear index
- str << (TQ_INT32) entryCount;
- for(TQDictIterator<KSycocaEntry::Ptr> it ( *m_entryDict );
- it.current();
- ++it)
- {
- KSycocaEntry *entry = (*it.current());
- str << (TQ_INT32) entry->offset();
- }
-
- // Dictionary index
- m_sycocaDictOffset = str.device()->at();
- m_sycocaDict->save(str);
-
- int endOfFactoryData = str.device()->at();
-
- // Update header (pass #2)
- saveHeader(str);
-
- // Seek to end.
- str.device()->at(endOfFactoryData);
-}
-
-void
-KSycocaFactory::addEntry(KSycocaEntry *newEntry, const char *)
-{
- if (!m_entryDict) return; // Error! Function should only be called when
- // building database
-
- if (!m_sycocaDict) return; // Error!
-
- TQString name = newEntry->name();
- m_entryDict->insert( name, new KSycocaEntry::Ptr(newEntry) );
- m_sycocaDict->add( name, newEntry );
-}
-
-void
-KSycocaFactory::removeEntry(KSycocaEntry *newEntry)
-{
- if (!m_entryDict) return; // Error! Function should only be called when
- // building database
-
- if (!m_sycocaDict) return; // Error!
-
- TQString name = newEntry->name();
- m_entryDict->remove( name );
- m_sycocaDict->remove( name );
-}
-
-KSycocaEntry::List KSycocaFactory::allEntries()
-{
- KSycocaEntry::List list;
- if (!m_str) return list;
-
- // Assume we're NOT building a database
-
- m_str->device()->at(m_endEntryOffset);
- TQ_INT32 entryCount;
- (*m_str) >> entryCount;
-
- if (entryCount > 8192)
- {
- KSycoca::flagError();
- return list;
- }
-
- TQ_INT32 *offsetList = new TQ_INT32[entryCount];
- for(int i = 0; i < entryCount; i++)
- {
- (*m_str) >> offsetList[i];
- }
-
- for(int i = 0; i < entryCount; i++)
- {
- KSycocaEntry *newEntry = createEntry(offsetList[i]);
- if (newEntry)
- {
- list.append( KSycocaEntry::Ptr( newEntry ) );
- }
- }
- delete [] offsetList;
- return list;
-}
-
-void KSycocaFactory::virtual_hook( int /*id*/, void* /*data*/)
-{ /*BASE::virtual_hook( id, data );*/ }
-